5

私は c# とビジュアル スタジオの初心者ですが、一般的なプログラミングではありません。質問への回答を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

これを試して:

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 に答える
2

ブランドnew Form3()インスタンスを作成しています。
これは、既存のフォームには影響しません。

フォームをパラメーターとしてメソッドに渡す必要があります。

于 2012-05-14T02:19:07.360 に答える
0

フォーム インスタンスを他のクラスに送信する

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

フォーム (Designer.cs) でコントロールPrivateを変更することにより、別のクラスのコントロールにアクセスする簡単な方法Public

于 2014-08-23T06:09:38.540 に答える