2011-02-16 69 views
4

我有一个基于WinForms的应用程序。它的编译和运行非常完美。 问题是,从昨天开始,我无法打开主窗体的设计器文件。
起初我以为这是由于我添加以下电话:设计器在VS 2008上加载c#/ .Net 3.5的错误

StyleManager.Load("some isl file"); 

我删除它,我解开了更改文件,并没有什么。

我得到的错误是来自XmlDocument.LoadXml()调用的“根元素丢失”。源是实际尝试加载xml文件的方法,但只在运行时才这样做。

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

更新

如果我注释掉的应该读取XML(在InitializeComponent())方法的代表登记,不发生问题。

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

在System.Xml.XmlTextReaderImpl.Throw(例外五) 在System.Xml.XmlTextReaderImpl.ThrowWithoutLineInfo(字符串RES) 在System.Xml.XmlTextReaderImpl.ParseDocumentContent() 在System.Xml.XmlTextReaderImpl。阅读() 在System.Xml.XmlLoader.Load(DOC的XmlDocument,XmlReader中的读者,布尔preserveWhitespace) 在System.Xml.XmlDocument.Load(XmlReader中读取) 在System.Xml.XmlDocument.LoadXml(字符串XML) 在MyApp.Utilities.Xml.Load(String str) at Editor.Editor.tabFlowView_ActiveTabChanged(Object sender,ActiveTabChangedEventArgs e) at Inf ragistics.Win.UltraWinTabControl.UltraTabControlBase.OnActiveTabChanged(ActiveTabChangedEventArgs E) 在Infragistics.Win.UltraWinTabControl.UltraTabControlBase.RaiseEvent(UltraTabControlEventId ID,EventArgs的) 在Infragistics.Win.UltraWinTabControl.UltraTabControlBase.set_ActiveTab(UltraTab值) 在Infragistics的。 Win.UltraWinTabControl.UltraTabControlBase.OnManagerSelectedTabItemChanging(对象发件人,SelectedTabItemChangingEventArgs E) 在Infragistics.Win.UltraWinTabs.TabManager.set_SelectedTabItem(ITabItem值) 在Infragistics.Win.UltraWinTabControl.UltraTabControlBase.SetSelectedTab(UltraTab标签) 在Infragistics.Win。 Infragistics.Win.UltraWinTabControl.UltraTabControlBase上的UltraWinTabControl.UltraTabControlBase.PerformAction(UltraTabControlAction actionCode) .PerformDelayedInitialize() 在Infragistics.Win.UltraWinTabControl.UltraTabControlBase.OnCreateControl() 在System.Windows.Forms.Control.CreateControl(布尔fIgnoreVisible) 在System.Windows.Forms.Control.CreateControl(布尔fIgnoreVisible) 在系统.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible) at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible) at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible) at System.Windows.Forms。 Control.CreateControl(Boolean fIgnoreVisible) at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible) at System.Windows.Forms.Control.CreateControl() at System.Windows.Forms.Control。ControlCollection.Add(控制值) 在System.Windows.Forms.Form.ControlCollection.Add(控制值) 在System.Windows.Forms.Design.ControlDesigner.DesignerControlCollection.Add(对照C)

+0

我把它调用XML有关装载的是你自己设计的呢? – 2011-02-16 09:42:39

回答

3

我有一个表格上使用用户控件时,尤其是这种错误发生。如果你正在做一些需要“主动连接”的事情,它会抛出它无法解决的异常。

在你的情况下,它似乎是调用ActiveTabChanged事件,这是调用负载XML。在加载xml加载调用之前加载xml添加之前。

if (DesignMode) return; 

DesignMode

0

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

0

我已经看过几次,难倒了我几次。你是否在InitializeComponent()以外的构造函数中进行调用?

将它们移动到窗体(或Load)的Shown部分,构造函数在加载设计时被调用。 Infragistics元素有可能试图加载尚未准备好的XML。

您的窗体中是否有任何UserControl?这些也将在设计阶段针对构造者执行并造成严重破坏。

1

看来你要么尝试在窗体的构造函数中或任何子控件的构造函数中加载一些xml。在其中一个构造函数中引起的任何异常都可能导致此问题。

0

是tabFlowView_ActiveTabChanged,你的方法还是在infragistics里面?该方法中的某些内容正在尝试加载失败的xml。

如果这是你的代码,这在方法的开始,看看是否能解决它:

if (DesignMode) 
     return; 
1

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

我看到了有关缺失根元素的错误。有时候人们并没有真正阅读例外提供的基本信息。或许可以发布您的XML文件会有所帮助,不知是不是真的错过了根元素:

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