5

我是 C# 和 Visual Studio 的新手,但一般不会编程。我搜索了我的问题的答案 3 天,我发现了很多,但由于一些奇怪的原因(我确定我错过了一些非常明显的东西)我无法让它工作。我认为这是像我这样的新手问的最基本的问题。我有一个带有文本框和按钮的表单(Form3)(我设置它只是为了测试目的)。我想从另一个类中填充和阅读这个文本框。我知道最合适的方法是使用 GET 和 SET 访问器在 Form3.cs 中创建一个属性。我这样做了,但我无法让它工作。我没有收到任何错误消息,但我也无法设置文本框的值。它只是保持空白。这是我的示例代码:

namespace WindowsFormsApplication1
{
    public partial class Form3 : Form
    {
        public string setCodes
        {
            get { return test1.Text; }
            set { test1.Text = value; }
        }

        public Form3()
        {
            InitializeComponent();
        }

        private void Form3_Load(object sender, EventArgs e)
        {   }

        private void button1_Click(object sender, EventArgs e)
        {
            a.b();
        }
    }

    public class a
    {       
        public static void b()
        {
            Form3 v = new Form3();
            v.setCodes = "abc123";
        }
    }
}

有人可以帮我解决这个问题吗?

4

4 回答 4

5

问题是您将值设置为表单的新实例。尝试这样的事情:

public partial class Form3 : Form {
    public string setCodes
    {
        get { return test1.Text; }
        set { test1.Text = value; }
    }

    private A a;

    public Form3()
    {
        InitializeComponent();
        a = new A(this);
    } 

    private void button1_Click(object sender, EventArgs e)
    {            
        a.b();            
    }


    private void Form3_Load(object sender, EventArgs e)
    {

    }
}

public class A
{       
    private Form3 v;

    public a(Form3 v)
    {
        this.v = v;
    }

    public void b()
    {
        v.setCodes = "abc123";
    }
}    
于 2012-05-14T02:21:48.900 回答
2

您正在创建一个品牌new Form3()实例。
这不会影响现有表格。

您需要将表单作为参数传递给方法。

于 2012-05-14T02:19:07.360 回答
2

尝试这个:

public partial class Form3 : Form
{
    /* Code from question unchanged until `button1_Click` */

    private void button1_Click(object sender, EventArgs e)
    {
        a.b(this);
    }
}

public class a
{       
    public static void b(Form3 form3)
    {
        form3.setCodes = "abc123";
    }
}

这会将表单的当前实例传递给另一个类,以便它可以更新setCodes属性。以前您是在创建一个新的表单实例,而不是更新当前的表单。

于 2012-05-14T02:46:19.673 回答
0

将表单实例发送到其他其他类

Form1 objForm1=new Form1();
obj.Validate(objForm1);

通过在 Form(Designer.cs) 中修改 Controls 来访问另一个类中的控件的简单Private方法Public

于 2014-08-23T06:09:38.540 回答