C# winform form窗体与class类的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# winform form窗体与class类的问题相关的知识,希望对你有一定的参考价值。
Form1,Class1,Form1中有个button1,按钮初始化Enabled=false
通过Form1的load()方法,加载Class1中的方法,Class1中的方法是将Form1的按钮Enabled=true;
code 如下:
//Form1
public partial class Form1 : Form
Class1 c;
public Form1()
InitializeComponent();
private void Form1_Load(object sender, EventArgs e)
c = new Class1();
c.aa();
//Class1
public class Class1
Form1 f1;
public void aa()
f1 = new Form1();
f1.button1.Enabled = true;
以上代码无法实现Form1的按钮为可用,运行后那按钮仍然是灰的。
求解!!
解决方法 : 重写Class1的构造方法 给它一个参数 参数是一个Button按钮
然后在Form1实例化Class1的时候 把那个button放在里面就好了 参考技术A 把form1作为参数传给class1,而不是重新定义一个,如下代码
public partial class Form1 : Form
Class1 c;
public Form1()
InitializeComponent();
private void Form1_Load(object sender, EventArgs e)
c = new Class1(this);
c.aa();
//Class1
public class Class1
public Class1(Form1 f)
f1=f;
Form1 f1;
public void aa()
f1.button1.Enabled = true;
参考技术B 你又定义了一个form1的实例...
改成
public class Class1
public void aa(Button btn)
btn.Enabled = true;
调用的时候直接把button当参数传进去
c = new Class1();
c.aa(button1);本回答被提问者和网友采纳 参考技术C 类中的f1 是你自己定义的 不是窗体 form1 啊 ,这个问题你只要在窗体中定义一个方法就行了。不要搞得那么复杂! 参考技术D 因为你的类中的Form1跟你窗体的form1不是同一个对象,你在下面的类中用f1.Show();就知道了
以上是关于C# winform form窗体与class类的问题的主要内容,如果未能解决你的问题,请参考以下文章
C# 做的winform窗体程序把一个Form给为自定义控件?
winform 窗体加载的问题,C#里不同Panel中窗体的调用
winform 窗体加载的问题,C#里不同Panel中窗体的调用