C# 按钮。表单可见后,文本正在更改
我有一个加载表单的按钮,因为它从数据库获取大量数据,需要几秒钟,我想建议用户等待 单击按钮时,按钮文本不会更改 这是我正在使用的按钮单击代码:C# 按钮。表单可见后,文本正在更改,c#,winforms,C#,Winforms,我有一个加载表单的按钮,因为它从数据库获取大量数据,需要几秒钟,我想建议用户等待 单击按钮时,按钮文本不会更改 这是我正在使用的按钮单击代码: private void btnItemConfigForm_Click(object sender, EventArgs e) { var itemConfigBtnText = btnItemConfigForm.Text; btnItemConfigForm.T
private void btnItemConfigForm_Click(object sender, EventArgs e)
{
var itemConfigBtnText = btnItemConfigForm.Text;
btnItemConfigForm.Text = "Waiting...";
ItemConfigForm form = new ItemConfigForm();
form.Show();
if (form.Created)
{
btnItemConfigForm.Text = itemConfigBtnText;
}
}
如果我不加评论
if (form.Created)
{
btnItemConfigForm.Text = itemConfigBtnText;
}
在新表单窗口可见后,按钮文本变为等待
在窗体窗口可见之前,我缺少什么来更改按钮文本。添加
btnItemConfigForm.Update();
在
这将在开始初始化和显示表单之前更新按钮控件。简单的解决方案是添加此行:
btnItemConfigForm.Refresh();
在这一排之后
btnItemConfigForm.Text = "Waiting...";
否则,只有在函数结束时按钮的文本才会更改,此函数将重新绘制表单显示
附言。
如果您希望表单不会被阻止-您可以在异步运行中使用函数“Show”(或New),那么您将需要事件来通知第一个表单何时加载表单
对不起,我的英语…:) 你问错问题了。正确的问题应该是“如何在后台加载数据库条目,这样我的UI线程就不会阻塞,消息也不会一直被处理?”。请参阅以获取解释。这或多或少是一个副本。@Casper不,不,不。。。不要链接到该Visual Basic方法。另请参见.Cheers@CodeCaster I将避免应用程序。DoEventsUI几乎是一个datagridview,没有数据就毫无用处,所以不要介意它阻塞UIC。使用control.Update()和control.Refresh()有什么区别吗?@PeterCampbell你说得对,control.Update()更好。我认为control.Refresh()会重新绘制自己和所有子控件,但是control.Update()只会重新绘制更改的内容
btnItemConfigForm.Text = "Waiting...";