4

Visual Studio(Express)とC#はまったく初めてです。一部のユーザー入力を受け入れ、その入力をメッセージボックスに表示するWindowsフォームを作成しました(クリックするとメッセージボックスを閉じる[OK]ボタンが自動的に表示されます)。

代わりに、最初のフォームで収集されたユーザー入力を、メッセージ(ラベル)を表示し、入力を表示し、2つのボタンの選択肢を提供する新しいフォームに表示したいと思います。1つは受け入れるボタン、もう1つは戻って変更するボタンです。入力。

私はこれを行う方法がわかりません。アドバイスをいただければ幸いです。

4

4 に答える 4

3

確認メッセージなどが必要なようです。MessageBoxクラスはこの機能を提供します。

   DialogResult btn = MessageBox.Show("your message", 
                                      "your title", 
                                      MessageBoxButtons.OKCancel, 
                                      MessageBoxIcons.Question);
   if(btn == DialogResult.Cancel)
        // User canceled, return to the string editor 
   else
        // User confirmed, do you work 

必要に応じて、対応するDialogResult.YesおよびDialogResult.Noを含むMessageBoxButtons.YesNoの列挙型もあります。

MessageBoxButtonsのリファレンスについてはこちらをご覧くださいMessageBoxIconsのリファレンスについてはこちらをご覧ください

于 2012-06-01T14:51:56.520 に答える
1

必要なのは、最初のフォームから2番目のフォームに情報を渡すことです。これは、個々のプロパティ(文字列、intなど)または完全なデータ構造(オブジェクト)のいずれかを使用して、子フォームにプロパティを設定することで実行できます。入力フォームは情報を収集し、サブ子フォームを作成し、それにプロパティを設定してから、フォームを表示します。これを行う他の多くの方法ですが、単純なものから始めて、複雑なものに積み上げていきます。

于 2012-06-01T14:46:23.570 に答える
1

2番目のフォームにデータを渡す必要がある場合は、そのフォームにプロパティ/プロパティを作成するか、コンストラクターパラメーターを介してデータを提供します。また、2番目のフォームの2つのボタンにDialogResultプロパティを割り当てます。DialogResult.OK入力を受け入れるボタンに設定します。ダイアログとして表示し、適切なアクションを実行するときに、2番目のフォームから返された値を確認します。

using(SecondForm secondForm = new SecondForm()
{
   secondForm.Data = yourData;
   if (secondForm.ShowDialog() != DialogResult.OK)
   {
       // go back and change input
       return
   }

   // accept input
}
于 2012-06-01T14:50:09.610 に答える
1

したがって、Form2それが存在するためには、それを作成するものによって提供される何らかの価値が必要です。その情報がなければ、Form2のインスタンスは存在しないはずです。これは、(そのフォームのプロパティではなく)そのフォームのコンストラクターにある必要があることを示しています。

これは、Form1あなたの中に次のようなものがあることを意味します:

string someData; //populate based off of user input
Form2 childForm = new Form2(someData);
//then hide current form and show child form

Form2には、おそらくすでにコンストラクターがあります。次のように変更する必要があります。

public Form2(string someData) //TODO give better parameter name
{
  someLabel.Text = someData;
}

次に、親フォームに戻る子フォームを処理する必要があります。これに対処するための好ましい方法は、イベントを使用することだと思います。フォームには、FormClosing添付できるイベントがあります。これにより、子フォームが閉じられたときに親フォームがコードを実行できるようになります。

文字列someData; //ユーザー入力に基づいて入力Form2childForm= new Form2(someData);

childForm.FormClosing += (sendingForm, args) =>
{
  this.Show();
  bool result = childForm.DidUserAccept;
}

DidUserAcceptここでは、ユーザーが値を受け入れるか拒否するかについて、子フォームのプロパティを使用しました。Form2でそれを定義する必要があります。

public bool DidUserAccept {get; private set;}

承認/キャンセルのボタンクリックハンドラーでは、それに応じて結果を設定し、フォームを閉じることができます(閉じると、閉じたイベントがトリガーされ、関連するコードが実行されForm1ます。

于 2012-06-01T14:54:55.083 に答える