0

textbox.textから設定したいのですclass1が、ボタンを押しても何も起こりません。どうしたの?

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        Class1 c;
        private void button1_Click(object sender, EventArgs e)
        {
            c = new Class1();
            c.x();
        }
    }
}

そして、このコードからclass1

namespace WindowsFormsApplication1
{
    class Class1
    {
        public static Form1 f;

        public void x()
        {
            f = new Form1();
            f.textBox1.Text = "hello";
        }
    }
}

私はすでにtextBox1修飾子を public に変更しています。

4

2 に答える 2

3

その際f = new Form1()、新しいフォームを作成します。すでにForm1open のインスタンスがある場合、これにより の 2 つのインスタンスが得られますForm1。それらのいずれかでメソッドを呼び出しても、もう一方には影響しません。フォームの参照をインスタンスに渡し、Class1その参照でメソッドを呼び出す必要があります。

これにはさまざまな方法があります。x参照を引数としてメソッドに渡すこともできます。

public void x(Form1 f)
{
    f.textBox1.Text = "hello";
}

呼び出すときに、コードが関連付けられているオブジェクトであるx特別な変数を渡すことができます。thisそれはあなたのインスタンスをに渡すForm1のでx、それxを使うことができます。

c.x(this);
于 2013-04-09T09:16:07.920 に答える
0
private void button1_Click(object sender, EventArgs e)
{
    c = new Class1(this);
    c.x();
}


class Class1
{
    public static Form1 f;

    public Class1(Form1 form)
    {
        f = form;
    }

    public void x()
    {
        f.textBox1.Text = "hello";
    }
}

問題は、x メソッドで新しい Form1 インスタンスを作成することです。私のスニペットに従ってコードを変更すると、機能します。

于 2013-04-09T09:16:58.417 に答える