目前我有多个班级,其中一个名为'变班班'我在哪里
{get;set;}
我从其他班级获得的价值观。在空白中访问这些值只是:
Private void (Variables vb)
{
}
然而,在“负载”中Winforms的一部分,
private void Form1_Load(object sender, EventArgs e)
{
}
来自变量类:
public class Variables
{
public int Node { get; set; }
}
object sender, EventArgs e
部分占据了我放置参数的空间。有什么方法可以从winform上的班级Node
获得Variables
吗?
答案 0 :(得分:2)
您的方法Form1_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);
答案 1 :(得分:0)
我不能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;
}
答案 2 :(得分:0)
也许你的尝试实际上是在WinForms中使用MVP-Pattern。非常好的主意。 然后,您可以使用DataBinding将Forms-Controls绑定到“Variables类”属性。您的变量类采用演示者角色,您的表单是视图,您的模型是变量类数据的来源。
不幸的是,该模式使用了一些必须处理的高级机制。
有关详细信息,请参阅此处: Databinding in MVP winforms