从分部类访问表单对象
本文关键字:访问表 单对象 | 更新日期: 2023-09-27 18:16:44
我有一个使用了很多控件的表单。这些控件背后的一些逻辑在其他类中。
逻辑的其他元素直接绑定到表单上的对象(列表框、标签、按钮等),因此将它们保存在表单的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上的其他人建议我的方法应该有效,但除非我错过了一些重要的东西,否则它不会。
在我的研究中,有些人建议你可以为对象创建属性。我真的不想这样做,因为我只想有规律的、正常的访问对象,而不必做所有这些额外的步骤(可能会破坏一开始拆分代码的目的)。
你能告诉我我想做的是否可能吗?如果是这样,我应该采取什么方法才能使其正常工作?
谢谢。
不能直接在类中编写代码,无论是部分代码还是非部分代码。把你的代码放在一个方法中:
namespace Project1
{
partial class Form1
{
label1. //nope!
public void CodeGoesInHere()
{
label1.Text = "hello"; // yep!
}
}
}