我遇到事件处理问题。我正在使用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属性,因为它未传递给事件处理程序。我是否正确地说我必须重载按钮类的默认“按钮事件处理程序”以将另一个控件作为参数?如果是这样,我该怎么做? 如果不是这样,我怎么能去做,以便激活一个控件的事件将改变另一个控件的属性。
干杯
答案 0 :(得分:0)
您可以在班级声明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!";
}