我有一个使用大量控件的表单。这些控件背后的一些逻辑在其他类中。
逻辑的其他元素直接绑定到表单上的对象(列表框,标签,按钮等),将它保存在表单的designer.cs文件中是有意义的。代码量太大,我无法在designer.cs文件中进行管理,因此我想将该代码分解为部分类。我还希望该部分类能够不受限制地访问表单中的任何对象。
不幸的是我似乎无法访问表单的控件。首先,这是我的测试(使用Visual Studio 2015中的新项目的开箱即用创建):
Form1.cs的
namespace Project1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
}
}
Form1.Designer.cs
partial class Form1
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// lots of other code generated by Visual Studio...
...稍后在Form1.Designer.cs
中private System.Windows.Forms.Label label1;
这就是我的自定义部分类文件中的问题,称为Form1.MoreCode.cs
namespace Project1
{
partial class Form1
{
label1. //nope!
}
}
正如您所看到的,我尝试在designer.cs文件中访问名为“label1”的表单对象,但却无法访问。我尝试将标签本身公开,然后我尝试将所有类公开,如下所示:
public partial class form1
......就像这样:
private System.Windows.Forms.Label label1;
我在很少的帮助下做了很多研究。 Stack Overflow上的其他人建议我的方法应该有效,但除非我错过了一些重要的东西,否则它不会。
同样在我的研究中,有些人建议你可以为对象创建属性。我真的不想这样做,因为我只是想要定期,正常地访问对象,而不必执行所有这些额外的步骤(可能会破坏首先拆分代码的目的)。
你能告诉我,我想做什么是可能的吗?如果是这样,为了使这项工作正常,我应该采取什么方法?
感谢。
答案 0 :(得分:1)
你不能直接在一个类中编写代码,部分或不编写代码。将代码放在方法中:
namespace Project1
{
partial class Form1
{
label1. //nope!
public void CodeGoesInHere()
{
label1.Text = "hello"; // yep!
}
}
}