2014-06-25 34 views
0

我想找到一种方法来访问方法和变量的窗体和类彼此使用实例。这里是我的代码:在C#中访问窗体方法和变量从一个类,反之亦然#

我的表单代码:

public partial class Form1 : Form 
{ 
    int var1 = 0; 

    public Form1() 
    { 
     InitializeComponent(); 
     Glob glob = new Glob(this); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 

    } 
} 

和我的类代码:

public class Glob 
{ 
    private Form1 _form; 

    public Glob(Form1 parent) 
    { 
     _form = parent; 
    } 

    public int Func1() 
    { 
     return 10; 
     _form.var1 = 10; 
    } 
} 

我可以调用的形式方法,从我的课,但我不能调用类的方法来自button1_Click事件!我的代码有什么问题吗?

回答

1

这是因为您的范围glob是您的构造函数的本地。将它声明为模块级别的变量,它会工作得很好。

public partial class Form1 : Form 
{ 
    int var1 = 0; 
    Glob glob; 

    public Form1() 
    { 
     InitializeComponent(); 
     glob = new Glob(this); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     glob.Func1(); 
    } 
} 

[编辑]

西蒙怀特海的回答给出您有其他问题更详细,但我解决您的具体问题:“为什么我不能叫glob从我的按钮点击?”

2

这不会设置该属性:设置属性

public int Func1() 
{ 
    return 10; 
    _form.var1 = 10; 
} 

之前函数返回。你应该得到一个unreachable code警告。

此外,您的var1变量是私人的。你需要把它公开(也是利用它)。这是因此它可以在那里其宣称的外部访问:

public int Var1 { get; set; } 

另外..你想让你的Glob实例是表单级别:

private Glob _glob; 

public Form1() 
{ 
    InitializeComponent(); 
    _glob = new Glob(this); 
} 

然后就可以调用它的单击事件:

private void button1_Click(object sender, EventArgs e) 
{ 
    _glob.Func1(); 
} 
相关问题