请问c#中如何在静态函数中得到实例类的中控件值,主界面类Form1中,有一个静态函数(用于另一个线程),这个函数中需要得到和设置主界面上的控件值,现在我已经实现设置控件的值,但是不知道如何获取控件的值。设置控件的置是用委托实现的,我估计得到也是用委托,但是设置委托只是单向传递参数,并没有返回值,现在要获取主界面的控件值,肯定要有什么返回值之类的,不知道如何写。本来此线程没有用到静态函数,但是因为要传参数,就用了参数化委托:
Thread t1 = new Thread(new ParameterizedThreadStart(Form1.check))
结果老提示委托或重载不匹配之类的,把check函数改成static就没这个错误了,但是现在check函数中的:
if (this.textbox1.text=="") 这样的代码就不行了,不能用了,所以,问题可以规结为:如何在c#线程中得到和设置主线程控件的值,分为得到和设置2方面。
Thread t1 = new Thread(new ParameterizedThreadStart(Form1.check))
结果老提示委托或重载不匹配之类的,把check函数改成static就没这个错误了,但是现在check函数中的:
if (this.textbox1.text=="") 这样的代码就不行了,不能用了,所以,问题可以规结为:如何在c#线程中得到和设置主线程控件的值,分为得到和设置2方面。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void button1_Click(object sender, EventArgs e)
{
SetText(this);
} private void button2_Click(object sender, EventArgs e)
{
GetText(this);
} public static void SetText(Form1 frm)
{
frm.textBox1.Text="Hullo World!";
} public static void GetText(Form1 frm)
{
MessageBox.Show(frm.textBox1.Text);
}
}
“check”的重载均与委托“System.Threading.ParameterizedThreadStart”不匹配我在:
ThreadCheck cls1 = new ThreadCheck(1, 100,this); //这里的this就是我在参数中新带的form1类型的指针
Thread t1 = new Thread(new ParameterizedThreadStart(Form1.check))
t1.IsBackground = true;
t1.Start(cls1);这段代码中传了cls1这个类,这个类就是封装了参数,并且check的原型:
public static void check(ThreadCheck tck) 我现在就搞不懂了,为什么还提示不匹配啊。
public static void check(Object tck)
通过 tck as ThreadCheck 或者 (ThreadCheck)tck 将实参转为ThreadCheck