C# 更改其他小部件/控件属性的EventHandler

C# 更改其他小部件/控件属性的EventHandler,c#,event-handling,overloading,gtk#,C#,Event Handling,Overloading,Gtk#,我在事件处理方面有问题。我正在使用gtk创建一个表单应用程序,在它们之间有两个标签和一组按钮 Label Character1 = new Label ("Character1"); Label Character2 = new Label ("Character2"); HBox layoutTBS = new HBox(true,50); layoutTBS.PackStart (Character1, false,true,3); Button m

我在事件处理方面有问题。我正在使用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”无法更改其文本属性,因为它未传递给事件处理程序。我必须重载button类的默认“button press事件处理程序”才能将另一个控件作为参数,这样说对吗?如果是,我该怎么做? 如果不是这样,我应该如何使一个控件被激活的事件改变另一个控件的属性

干杯

您可以在班级级别声明标签。这样,当您在Button Click方法中时,就可以访问它

例如,我假设所有代码都在表单类中:


ButtonPressed方法是否与Character1文本框在同一类中?否,ButtonPressed方法属于button类。我希望它更改Character1文本框的文本属性。如果我误解了这个问题,请原谅,我还不太熟悉OOP术语,这不是我所理解的。你在哪一类中定义了纽扣近战=新纽扣近战;哦,我明白了,是的,他们在同一个类中。Thnx Yuval,你是对的,我必须在类级别上声明它。但不是我遇到了另一个问题。当我在类级别声明按钮和标签时,它们突然变成字段而不是变量。程序不起作用,我想知道这是否是问题所在。我认为你应该为你的另一个问题创建一个新问题。如果此答案对您有帮助,请单击计票下方的空复选标记将其标记为答案。
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!";
}