表单和代码不同步
本文关键字:同步 代码 表单 | 更新日期: 2023-09-27 17:58:19
我有一个文本框,里面有一些文字("hello"(。如果我将文本更改为其他任何内容并从文本框中获取文本(通过代码(,尽管我更改了它,但我会得到"hello"。
在另一种情况下,当我更改复选框的检查状态时,复选框不会在视觉上勾选(或取消选中(。
有人知道发生了什么以及如何同步它们吗?
我打开了一个新项目,这是我表单上的唯一功能:
public void Switch()
{
Checkbox1.Checked = !Checkbox1.Checked;
}
我从程序中调用它.cs :
static MainForm MyForm;
MyForm = new MainForm();
MyForm.Switch();
我假设您只是在Main
中实例化MainForm
,然后调用Switch
.
这意味着您不会在 UI 线程上发送请求。
因此,您可以Invoke
要在 UI 线程上运行的代码:
public void Switch()
{
// true if off of the UI thread, and thus must be Invoked
if (this.InvokeRequired)
{
// off UI thread; put it onto it
this.Invoke(Switch);
}
else
{
// on UI thread
Checkbox1.Checked = ! Checkbox1.Checked;
}
}
应仅从 UI 线程与 UI 交互。你不应该用 Invoke
乱扔你的代码,除非你希望从 UI 线程中调用它,或者你为其他人提供了一种这样做的方法(一些公共 API(。