我怎样才能消除2种形式之间的通信延迟
本文关键字:之间 延迟 通信 2种 | 更新日期: 2023-09-27 18:13:58
目前我正在使用手工消息框构建的想法:
c#中两个窗体之间的通信
这个解决方案作为我项目的一部分的基础,我发现当我使用这个代码时,它没有立即反应:
//Form 1
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Framerate = "Test1";
}
private void button1_Click(object sender, EventArgs e)
{
Form2 frm = new Form2(this);
frm.Show();
label2.Text = Framerate; // this statement is delayed / working too soon
}
public string Framerate
{
get { return label1.Text; }
set { label1.Text = value; }
}
}
在Form2中我正在改变帧率。当调试这个项目时,我发现帧速率在Form2和Form1中都发生了变化,但当我进一步运行它时
label2.Text = Framerate
不改变。我的问题是,为什么它没有立即改变,我该怎么做才能使它立即改变
编辑:似乎在显示Form2之前运行了整个button1_click。
Label1。当我关闭Form2时,文本被更改(因为get/set的东西),但这对我的应用程序来说太晚了
编辑:经过一番折腾,我自己找到了一个答案,也许不太好,但对我的应用程序有用:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Framerate = "Test1";
}
private void button1_Click(object sender, EventArgs e)
{
Form2 frm = new Form2(this);
frm.Show();
}
private void test()
{
label2.Text = Framerate;
}
public string Framerate
{
get { return label1.Text; }
set
{
label1.Text = value;
test();
}
}
}
感谢大家对我的帮助。
在label2.Text = Framerate;
之后尝试label2.Refresh();
您需要包含对Form1的引用。
经过一番折腾,我自己找到了一个答案,也许不太好,但对我的应用程序有用:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Framerate = "Test1";
}
private void button1_Click(object sender, EventArgs e)
{
Form2 frm = new Form2(this);
frm.Show();
}
private void test()
{
label2.Text = Framerate;
}
public string Framerate
{
get { return label1.Text; }
set
{
label1.Text = value;
test();
}
}
}