使用按钮标签

问题描述 投票:0回答:1

假设程序逻辑根据随机内容更改按钮标签 - 但使用 UI 线程。

按钮标签值在点击事件中使用可靠吗?即,事件处理程序时的值与单击时的值是否相同?

如果没有,将事件特定参数传递到安全的按钮单击事件的最佳方法是什么?

更新

根据要求添加了示例。 (记住这只是理论上的)。

Windows.Forms.Timer timer = new Timer();
timer.Interval = 1;
timer.Tick += new EventHandler(timer_tick);
timer.Start();

void timer_tick(object sender, EventArgs e)
{
    this.button.Tag = Random.NextInt(100).ToString();
}

void button_click(object sender, EventArgs e)
{
    string s = (string)((Button)sender).Tag;
    Console.WriteLine("Tag value as at button push: " + s);
}

换句话说,问题归结为:是否可以将事件嵌入到 GUI 事件队列中,以允许在按下按钮和处理按下的单击事件之间更改按钮的状态?

c# .net events thread-safety
1个回答
0
投票

假设您使用的是winform。

恕我直言,您可以使用

Tag
属性来传递控件特定参数,但您还必须记住 Windows 窗体控件不是线程安全的。要进行线程安全调用,必须使用
InvokeRequired
。以下链接提供了一个以线程安全方式为 TextBox 设置文本的示例,但对于
Tag
属性来说应该不会有很大不同。

http://msdn.microsoft.com/en-us/library/ms171728(VS.80).aspx

希望这有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.