我如何得到我的类变量属性到Winform控件
本文关键字:属性 Winform 控件 类变量 我的 何得 | 更新日期: 2023-09-27 18:12:21
目前我有多个类,其中一个被称为'变量类',我{get;set;}
我的价值观是从其他班级获得的。在void中访问这些值很简单:
Private void (Variables vb)
{
}
但是在Winforms的"Load"部分,
private void Form1_Load(object sender, EventArgs e)
{
}
来自Variables类:
public class Variables
{
public int Node { get; set; }
}
object sender, EventArgs e
部分占用了我放置参数的空间。我有什么办法可以从窗体上的Variables
类中获得Node
吗?
你的方法Form1_Load
是一个事件处理程序(因为它通常被调用作为一些事件发生的结果)。"Load"事件是由WinForms定义的,所以你不能改变参数是object sender
和EventArgs e
的事实。
WinForms在显示表单之前创建一个Form1
类的实例。当窗体上发生事件时,将调用同一对象上的事件处理程序。
因此,您可以将值存储在Form1
类的字段和属性中:
public class Form1 : Form
{
Variables _myVariables;
public Form1()
{
InitializeComponent();
_myVariables = new Variables() { Node = 10 }
}
private void Form1_Load(object sender, EventArgs e)
{
MessageBox.Show("The current value of _myVariables.Node is: " + _myVariables.Node);
}
}
如果你的Variables
对象是在你的表单之外创建的,那么你可以把它传递给你的Form1
构造函数:
public class Form1 : Form
{
Variables _myVariables;
public Form1(Variables variables)
{
InitializeComponent();
_myVariables = variables;
}
// ...
}
// Then, somewhere else:
var variables = new Variables() { Node = 10 };
var myForm = new Form1(variables);
myForm.Show();
// or: Application.Run(myForm);
我不能100%确定这是否是你要找的,但我想我可以帮助你。
namespace Example
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//class which can be used anywhere in the namespace
public class exampleClass
{
public const string SETSTATE = "0";
public const string GETSTATE = "1";
public const string SETVALUE = "2";
public const string GETVALUE = "3";
public const string SENDFILE = "4";
public const string STATE_RP = "129";
public const string VALUE_RP = "131";
public const string STATUS_RP = "128";
}
}
}
你可以在Form1中的任何地方使用exampleClass和它的任何封闭成员。您不需要将它传递到表单中的任何地方即可使用它。您可以稍后添加一个直接使用它的函数,如:
void exampleF()
{
//note that when you are accessing properties of UI elements from
//a non-UI thread, you must use a background worker or delegate
//to ensure you are doing so in a threadsafe way. thats a different problem though.
this.txtYourTextBox.txt = exampleClass.GETSTATE;
}
也许你的尝试实际上是在WinForms中使用MVP-Pattern。好主意。然后你可以使用数据绑定来绑定窗体控件到你的"变量类"属性。您的变量类扮演呈现者的角色,您的表单是视图,而您的模型是变量类数据的来源。
不幸的是,该模式使用了一些必须处理的高级机制。
要了解更多信息,您可以先看看这里:MVP winforms中的数据绑定