如何访问另一个类中的Windows窗体控件

时间:2014-10-15 05:55:28

标签: c# winforms

我有一个名为"Form1"的表单,其中包含名为"Button1""rtDisp"文本框的两个控件以及名为"Class1"的类。在名为Class1的类中,我想访问Form1控件,例如rtdisp,当我点击button1时,会显示一些文字“abc123”。

我的代码如下:当我执行以下代码时,它给出了以下错误:  'WindowsFormsApplication1.Class1' does not contain a constructor that takes '1' arguments

namespace WindowsFormsApplication1
{
  public partial class Form1 : Form
  {
    public string setcodes
    {
        get { return rtdisp.Text; }
        set { rtdisp.Text = value; }
    }
    private Class1 abc;
    public Form1()
    {
        InitializeComponent();
        abc = new Class1(this);
    }

    private void button1_Click(object sender, EventArgs e)
    {

        rtdisp.Text = setcodes;
    }
  }
}

namespace WindowsFormsApplication1
{
  public  class Class1
  {
    private Form1 v;
    public string abc(Form1 v)
    {
      this.v = v;
      return  v.setcodes = "abc123"; 
    }
  }
}

2 个答案:

答案 0 :(得分:0)

没错。阅读邮件。你还没有真正为Class1对象做一个构造函数。即使它是空的,你仍然应该制作一个。如果你想了解更多关于构造函数的内容,我非常乐意进入它...

public class Class1
{
    private Form1 v;
    public Class1()
    {
        //you normally do your initialization in here.
    }
    public string abc(Form1 v)
    {
      this.v = v;
      return  v.setcodes = "abc123"; 
    }
}

答案 1 :(得分:0)

这是因为,您正在初始化Class1对象,即' abc'在Form1' s构造函数中使用参数' this',如下所示:

public Form1()
{
    InitializeComponent();
    abc = new Class1(this);
}

因此Class1中应该有一个构造函数,它接受类型的参数,该类型在Class1中不存在。请将下面的代码放在Class1中:

public Class1(Form1 v)
{
    this.v = v;
}

并测试,它将解决您的问题。

我希望这会对你有所帮助。 :)