如何访问其他类中的Windows窗体控件

本文关键字:Windows 窗体 控件 其他 何访问 访问 | 更新日期: 2023-09-27 18:26:30

我有一个名为"Form1"的表单,包含两个名为""Button1""answers""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"; 
    }
  }
}

如何访问其他类中的Windows窗体控件

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

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

因此,类Class1中应该有一个构造函数,它采用Class1中不存在的类型的参数。请在Class1:中输入以下代码

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

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

我希望这对你有帮助

没错。阅读信息。您实际上还没有为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"; 
    }
}