この問題は一部の人にとっては非常に簡単かもしれませんが、私は悩まされています。
私が探している動作は次のとおりです。 - メニュー項目を選択すると、ダイアログが表示されます。- ダイアログの選択が行われた後、行われた選択に従って、新しいフォームがレンダリングされます
これはコードです:
this.panel1.Controls.Clear();
if (this.childForm != null)
{
this.childForm.Dispose();
this.childForm = null;
}
using (var selectionForm = new SelectTransaction())
{
var result = selectionForm.ShowDialog();
childForm = new TransactionForm(selectionForm.transactionName);
childForm.TopLevel = false;
this.panel1.Controls.Add(childForm);
childForm.Location = new Point(0, 0);
childForm.Show();
}
コードは、一般的に私が望むように機能します。しかし、ときどき、2 回続けて選択を行うと、ShowDialog()
は私の入力を待ちません。フォームを表示するのは当然です。
を使用する代わりに、選択オブジェクトを自分で作成して破棄しようとしましusing
たが、同じ問題が発生します。
ダイアログ結果はSelectTransaction
フォームに設定されます。そこには がありcombobox
、アイテムを選択すると結果が返されます。
public partial class SelectTransaction : Form
{
public string transactionName;
public SelectTransaction()
{
InitializeComponent();
// The data set is retrieving from a database
selectTransactionComboBox.Text = " - SELECT TRANSACTION - ";
selectTransactionComboBox.Items.Clear();
for (int i = 0; i < dataSet.Tables["TransactionInfo"].Rows.Count; i++)
{
selectTransactionComboBox.Items.Add(dataSet.Tables["TransactionInfo"].Rows[i].ItemArray.GetValue(0).ToString());
}
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
this.transactionName = selectTransactionComboBox.Items[selectTransactionComboBox.SelectedIndex].ToString();
this.Close();
}
}
誰かが私が間違っていることを教えてもらえますか?