EventHandler,用于更改另一个小部件/控件的属性
本文关键字:控件 属性 小部 另一个 用于 EventHandler | 更新日期: 2023-09-27 18:07:56
我在事件处理方面遇到了麻烦。我使用gtk#创建一个表单应用程序,有两个标签和一组按钮之间。
Label Character1 = new Label ("Character1");
Label Character2 = new Label ("Character2");
HBox layoutTBS = new HBox(true,50);
layoutTBS.PackStart (Character1, false,true,3);
Button melee = new Button ("Melee");
Button range = new Button ("Ranged");
Button magic = new Button ("Magic");
melee.ButtonPressEvent += ButtonPressEventHandler;
这是假定的自定义'事件处理程序'
private static void ButtonPresseventHandler (object obj, ButtonPressEventArgs args)
{
if (args.Event.Type == Gdk.EventType.TwoButtonPress) {
Character1.Text = "Character1 does a melee attack";
}
}
我正试图激活"按钮按下"事件来改变标签的文本。标签"Character1"不能更改其Text属性,因为它没有传递给事件处理程序。我是否正确地说,我必须重载默认的"按钮按事件处理程序"按钮类有另一个控件作为参数?如果有,我该怎么做?如果不是这样,我该如何使一个控件被激活的事件改变另一个控件的属性呢?
欢呼
可以在类级别声明Label
。这样,当你在Button Click
方法中,你就可以访问它了。
例如,我将假设所有代码都在您的Form
类中:
public class Form
{
public Button Mele { get; set; }
public Label Character1 { get; set; }
public Form()
{
Character1 = new TextBox();
Mele = new Button();
Mele.Click += OnButtonClicked;
}
private void OnButtonClicked(object sender, System.EventArgs e)
{
// Since Character1 is declared at class level, you may
// access it now inside the method
Character1.Text = "Mele has been clicked!";
}