设计器在VS 2008上使用c#/。Net 3.5加载错误

时间:2011-02-16 09:31:52

标签: c# winforms designer

我有一个基于WinForms的应用程序。它正在编译和运行完美。 问题是,从昨天开始,我无法打开主窗体的设计器文件 起初我认为这是由于我添加了以下调用:

StyleManager.Load("some isl file");

我删除了它,我撤消了对文件的更改,什么都没有。

我得到的错误是来自XmlDocument.LoadXml()调用的“Root element is missing”。源是实际尝试加载xml文件的方法,但仅在运行时执行此操作。

如果我忽略了这条消息,我得到一个“对象引用未设置为对象的实例”错误,并且忽略了这一点,我得到“设计器已经加载”。

更新

如果我注释掉了应该读取xml的方法的委托注册(在InitializeComponent()中),则不会发生问题。

我们在我们的解决方案中使用Infragistics,并在堆栈跟踪中提及它们。

  

在System.Xml.XmlTextReaderImpl.Throw(例外e)   在System.Xml.XmlTextReaderImpl.ThrowWithoutLineInfo(String res)   在System.Xml.XmlTextReaderImpl.ParseDocumentContent()   在System.Xml.XmlTextReaderImpl.Read()   在System.Xml.XmlLoader.Load(XmlDocument doc,XmlReader reader,Boolean preserveWhitespace)   在System.Xml.XmlDocument.Load(XmlReader阅读器)   在System.Xml.XmlDocument.LoadXml(String xml)   at MyApp.Utilities.Xml.Load(String str)   at Editor.Editor.tabFlowView_ActiveTabChanged(Object sender,ActiveTabChangedEventArgs e)   在Infragistics.Win.UltraWinTabControl.UltraTabControlBase.OnActiveTabChanged(ActiveTabChangedEventArgs e)   在Infragistics.Win.UltraWinTabControl.UltraTabControlBase.RaiseEvent(UltraTabControlEventId id,EventArgs e)   在Infragistics.Win.UltraWinTabControl.UltraTabControlBase.set_ActiveTab(UltraTab值)   at Infragistics.Win.UltraWinTabControl.UltraTabControlBase.OnManagerSelectedTabItemChanging(Object sender,SelectedTabItemChangingEventArgs e)   在Infragistics.Win.UltraWinTabs.TabManager.set_SelectedTabItem(ITabItem值)   在Infragistics.Win.UltraWinTabControl.UltraTabControlBase.SetSelectedTab(UltraTab选项卡)   在Infragistics.Win.UltraWinTabControl.UltraTabControlBase.PerformAction(UltraTabControlAction actionCode)   在Infragistics.Win.UltraWinTabControl.UltraTabControlBase.PerformDelayedInitialize()   在Infragistics.Win.UltraWinTabControl.UltraTabControlBase.OnCreateControl()   在System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)   在System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)   在System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)   在System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)   在System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)   在System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)   在System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)   在System.Windows.Forms.Control.CreateControl()   在System.Windows.Forms.Control.ControlCollection.Add(控制值)   在System.Windows.Forms.Form.ControlCollection.Add(控制值)   在System.Windows.Forms.Design.ControlDesigner.DesignerControlCollection.Add(Control c)

6 个答案:

答案 0 :(得分:3)

我在表单上使用UserControl时特别发生此错误。如果你正在做一些需要“活动连接”的东西,它会抛出它无法解决的异常。

在您的情况下,它似乎正在调用ActiveTabChanged事件,该事件正在调用load xml。在xml加载调用之前加载xml add之前。

if (DesignMode) return;

DesignMode

答案 1 :(得分:1)

您似乎要么尝试在窗体的构造函数中加载某些xml,要么在任何子控件的构造函数中加载。其中一个构造函数导致的任何异常都可能导致此问题。

答案 2 :(得分:1)

如果你的表单构造函数中有东西并且它抛出异常,那么你会得到奇怪的行为。将InitializeComponent()保存在表单ctor中,如果可能的话,将其余的初始化移动到Form_Load()事件处理程序。

我已经看到了有关缺少根元素的错误。有时,人们并不真正阅读例外提供的基本信息。也许发布您的XML文件会有所帮助,也许它确实缺少根元素:

<?xml version="1.0 .... >
<MyRootElement>
    <Child>
     </Child>
</MyRootElement>

答案 3 :(得分:0)

您是否正在使用任何第三方工具或您在工具箱中自定义的任何内容?当我更新第三方工具集或从工具箱中删除某些内容时,我遇到了这个问题。

答案 4 :(得分:0)

我已经看过几次并且难倒了几次。您是否在构造函数中进行除InitializeComponent()之外的任何调用?

将它们移动到窗体(或Load)的Shown部分,加载设计时将调用Constructor。可能是Infragistics元素正在尝试加载尚未就绪的XML。

您的表单中是否有任何UserControl?这些也将在设计时针对构造函数执行并造成破坏。

答案 5 :(得分:0)

tabFlowView_ActiveTabChanged,你的方法还是内部的infragistics?该方法中的某些东西试图加载失败的xml。

如果是你的代码,那么在方法的开头看看是否能解决它:

    if (DesignMode)
        return;