我如何得到我的类变量属性到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吗?

我如何得到我的类变量属性到Winform控件

你的方法Form1_Load是一个事件处理程序(因为它通常被调用作为一些事件发生的结果)。"Load"事件是由WinForms定义的,所以你不能改变参数是object senderEventArgs 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中的数据绑定