2
我想從另一個線程更改菜單項。我可以在其他控件上使用InvokeRequired/Invoke,但由於菜單項不是控件,因此難以實現相同的功能。從另一個線程啓用/禁用菜單項
對於其它控件,我這樣做:
private delegate void SetControlEnableHandler(object sender, Boolean bValue);
private void SetControlEnabled(object sender, Boolean bValue)
{
Control control = (Control)sender;
if (control.InvokeRequired)
control.Invoke(
new SetControlEnableHandler(SetControlEnabled),
new object[] { sender, bValue }
);
else
control.Enabled = bValue;
}
從工作線程我簡單的調用:
this.SetControlEnabled(btnPress, true);
和它的工作。
任何人都可以幫我在這裏的菜單項?
謝謝你, -Bhaskar
只是一個說明,如果你的操作完成後直接通知UI線程會不會更好,那麼UI線程將負責更改控件屬性?這也可以更好地隔離用戶界面中的背景/後端/工作邏輯。 – 2011-02-18 14:43:57