在C#中编写表单时无法查看设计器
我正在关注
winforms的
this教程,到目前为止,教程正在编写表单而不使用工具箱.我相信它很快就会更深入地介绍工具箱.
在本教程之后,我在以下两段代码中进行了部分类: 第一档: using System; using System.Windows.Forms; public class Numeric : System.Windows.Forms.TextBox { public Numeric() { } } public partial class Exercise { private Numeric txtbox; System.ComponentModel.Container components; } 第二档: using System; using System.Windows.Forms; public partial class Exercise : Form { private void InitializeComponent() { txtbox = new Numeric(); Controls.Add(txtbox); } public Exercise() { InitializeComponent(); } } public class program { public static int Main() { Application.Run(new Exercise()); return 0; } } 当我用F5运行代码时,一切看起来都很好:表单弹出文本框. 但出于某种原因,当我右键单击第二个文件并选择“视图设计器”时,我收到一条错误,上面写着“变量’txtbox’未声明或未被分配”.我可以选择“忽略并继续”,这会将我引导到一个没有文本框的表单. 为什么会这样?我知道有些人认为我应该使用工具箱,这可能是最明智的做法,但我仍然想知道为什么会这样. 解决方法
在Windows窗体设计器中打开窗体时,设计器会查看文件中的第一个类.如果文件具有包含该类的其他部分部分的Designer.cs,则还包括它并尝试反序列化这些文件内容.在反序列化和加载表单设计时的过程中,它创建表单基类的实例,并在这些文件中查找组件声明和InitializeComponents方法.如果找到它们使用反序列化代码创建组件并设置它们的属性,并将组件添加到创建的基类实例中.
一些有用的事实: >表单构造函数中的代码不会在设计时执行,但表单基类的构造函数将在设计时执行. 例 看看下面的代码,它有一些严重的问题: >该类具有与类名不同的构造函数 但有趣的是,你可以看到设计师的形式,即使有这些错误! 只需在项目中创建一个文件,并将下面的代码放在文件中,然后保存文件并关闭它.然后在不尝试构建解决方案的情况下,在设计器中打开表单.这是代码: using System using System.Windows.Forms namespace SampleApplication { public class MyForm:Form { public NotMyForm() { } public void InitializeComponent() { int i="x"; textBox1 = new TextBox() textBox1.Text = "Hi" this.Controls.Add(textBox1) } private TextBox textBox1 } } 这是设计师的截图: 更多信息 要查找更多信息,请查看以下链接: > How does the Windows Forms designer in Visual Studio load a Form? 解决您的问题 作为一种解决方案,您可以移动私有数字txtbox;并将它放在练习课中的第二个文件中. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |