从另一个按钮点击事件

时间:2018-02-14 17:40:25

标签: c# class object button access

我对C#很新,所以这可能很简单,虽然我花了几个小时没有解决方案进行搜索。

我正在使用Windows窗体,我正在尝试从另一个按钮单击事件访问一个对象。当我尝试访问Button2_Click中的对象时,我得到的错误是“名称'对象'在当前上下文中不存在。”

    public void Button1_Click(object sender, EventArgs e)
    {
        // Prefilled with a persons info
        MyClass object = new MyClass();
    }

    public void Button2_Click(object sender, EventArgs e)
    {
        // Access object
        string name = object.Name;
    }

所以我的问题是如何访问在另一个“Button_Click”中创建的对象?

2 个答案:

答案 0 :(得分:1)

存在两个问题。

  1. 您不能将my_dict.get('a1') # ['PROJ1', 'LOB1'] my_dict.get('o1') # ['PROJ1', 'LOBA'] my_dict.get('not exist') # None 用作变量名称。 (object是保留关键字)
  2. 您无法在另一个事件中访问内部变量。
  3. 要解决您的问题,您可以在创建初始对象时调整范围。

    object

    因此,对象位于类的上半部分,在构建Example时,始终会创建一个示例。因此,当您在public class Example { // Variable declared as a class global. private readonly Sample sample; // Constructor to build our sample. public Example() => sample = new Sample(); // Button writing a property from sample. protected void btnSend(object sender, EventArgs e) => Console.WriteLine(sample.SomeProperty); } 类中使用Sample时,它将被正确确定范围。

    我也不明白为什么你必须单击一个按钮来填充这个对象,所以我改为在创建Example后构建对象。

答案 1 :(得分:0)

object的范围应该是类级别,以供同一类中的其他方法使用:

private MyClass _myClassObject; // class level object. Remember "object" is reserved keyword that is why renamed it to "_myClassObject"
public void Button1_Click(object sender, EventArgs e)
{
        // Prefilled with a persons info
        _myClassObject = new MyClass();
}

public void Button2_Click(object sender, EventArgs e)
{
    // Access object
    string name = _myClassObject.Name;
}