プロジェクトに3つのフォームがあり、C#のフォーム間でデータを転送するときにフォームを呼び出す方法は?

StackOverflow https://stackoverflow.com/questions/1012631

  •  06-07-2019
  •  | 
  •  

質問

プロジェクトform1、form2、form3に3つのフォームがあり、プロジェクトform4にもう1つ追加しました。最初の3つのフォームは、ShowDialog()を介して既にリンクされています。

Program.csファイルに触れたくない。

最初にフォーム4を起動フォームとして呼び出すにはどうすればよいですか。以前のフォーム1は、プロジェクトに表示される最初のフォームでした。

また、form1 rdb1とrdb2に2つのラジオボタンがあります。 私のform2では、ボタンSelectにopenFileDialogがアタッチされています。今、ユーザーがform1でrdb1を選択すると、form2のopenFileDialogのフィルターは「.XML」のみでファイルを開く必要があります。拡張子として、かつrdb2がForm1で選択され、Form2でのみ「.TXT」が選択された場合。ファイルを開くことができます。

インテリセンスでこの構文を見つけることができません。助けていただけますか?

事前に感謝します。

役に立ちましたか?

解決

Program.csファイルに触れたくない理由を説明できますか?これはまさに、起動フォームを変更する場所です。

変更:

Application.Run(new Form1());

to:

Application.Run(new Form4());

第二に、Filterプロパティを使用してOpen-およびSaveFileDialogにフィルターを設定できます。次のような値に設定します。

XML Files|*.xml

またはテキストの場合:

Text Files|*.txt

編集して追加:

別のフォームからこれを行うには:

class Form1 {
  Form2 form2;

  void Form1_Load(object sender, EventArgs e) {
    form2 = new Form2();
  }

  void rdb1_CheckedChanged(object sender, EventArgs e) {
    if (rdb1.Checked) 
      form2.openFileDialog1.Filter = "XML Files|*.xml";
    else
      form2.openFileDialog1.Filter = "Text Files|*.txt";
  }
}

Form2デザイナーのopenFileDialog1のModifiersプロパティを" Public"に設定していることを確認してください。または「内部」クラス自体の外部からアクセスできるようにします。

他のヒント

program.csをタッチする必要があります。そこで最初のフォームが作成され、実行されます。

新しいwinformsプロジェクトを作成し、program.csを開きます。 Application.Runが呼び出される場所は、スタートアップフォームのインスタンスで確認できます。それがあなたがしなければならないことです。

怖がらないでください。すべて大丈夫です。


コメントへの応答:

Form1_Loadイベントは、Form1内でForm1によって 発生します。コールチェーンに戻って、Form1がインスタンス化され、Application.Runに渡される場所を見つける必要があります。そして、それはprogram.csにあります。

やる。そして、C#経由でCLRのコピーを取得します。後悔することはありません(最初の数章をスキップする限り!)

  

最初にフォーム4を起動フォームとして呼び出すにはどうすればよいですか?

     

Program.csファイルに触れたくない。

なぜProgram.csに触れないのですか? Application.Run(..)に渡されたフォームインスタンスが起動フォームを決定します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top