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属性,因为它没有传递给事件处理程序。我是否正确地说,我必须重载默认的"按钮按事件处理程序"按钮类有另一个控件作为参数?如果有,我该怎么做?如果不是这样,我该如何使一个控件被激活的事件改变另一个控件的属性呢?

欢呼

EventHandler,用于更改另一个小部件/控件的属性

可以在类级别声明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!";
}