5

これが本当に基本的なことであることはわかっていますが、MSDN、Google 検索、stackoverflow の間でこれを行う方法に関するガイドやチュートリアルは見つかりませんでした。

私は新しい Windows フォーム アプリケーションを作成しました。ここには、Form1 が 2 つのテキスト ボックスとボタンを所有する Program と Form1 があります。

Button1 は、Text1 から文字列を取得して program.cs に送信し、そこで文字列を編集して Form1 に送り返すことになっています。次に、Button2 が Text2 の新しい文字列を表示します。

Text1 から (Button1 を使用して) 文字列を取得するところまで行きましたが、それを処理できるように program.cs に送信する方法がわかりません。2つの間でデータを渡すには、正確に何をすればよいですか?

これが正しいスタートかどうかはわかりませんが、送信された文字列を取得するために myForm を作成しました。でもどうやって送り返すの?

Program.cs で:

static Form1 myForm;
[STAThread]
static void Main()
{

    string s1, s2;
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    myForm = new Form1();
    Application.Run(myForm);
    s1 = myForm.sendOver();

}
4

3 に答える 3

4

事実上できません。 Application.Run(myForm);フォームが閉じられるまでブロックされるため、フォームからデータを取得したり、フォームにデータを提供したりすることは適切ではありません。

ほとんどすべての winform プログラムで、program.cs を変更するべきではありません。場合によっては動作させることもできますが、設計の観点からは望ましいことではありません。

from の結果に基づいて処理を行いたい場合は、これらのいずれかとは別に、まったく新しいクラスを作成する必要があります。適切なときにそのクラスからメソッドを呼び出します (適切な場合はそのインスタンスを作成します) (これは、送信ボタンがクリックされたとき、フォームのクローズド イベント ハンドラーなどで発生する場合があります)。

于 2013-03-01T21:55:15.033 に答える
-1
static Form1 myForm;
[STAThread]

//we need a holder
//you can access static classes from your forms
public static class myCls {
    public static string myStr;
    static void myFunc(string str) {
        myStr = str; //or whatever
    }
}

static void Main()
{

    //string s1, s2;  //you don't need these
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    myForm = new Form1();
    Application.Run(myForm);
    //s1 = myForm.sendOver(); //you won't use this

}

form1には以下が含まれている必要があります。

//change your holder's content whereever you want
void Button1_Click() {
    myCls.myFunc("string");
}

form2には以下が含まれている必要があります。

//then call your holder's content whereever you want
void Button1_Click() {
    Text1.Text = myCls.myStr;
}
于 2013-03-01T22:09:09.287 に答える