0

この問題は一部の人にとっては非常に簡単かもしれませんが、私は悩まされています。

私が探している動作は次のとおりです。 - メニュー項目を選択すると、ダイアログが表示されます。- ダイアログの選択が行われた後、行われた選択に従って、新しいフォームがレンダリングされます

これはコードです:

        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();
    }
}

誰かが私が間違っていることを教えてもらえますか?

4

1 に答える 1

1

コンボボックスに入力しているときに、SelectedIndexChanged-Event が発生することがあります。代わりに、SelectionChangeCommitted-Event http://msdn.microsoft.com/en-us/library/system.windows.forms.combobox.selectionchangecommitted.aspxを使用します。

または別の解決策:フォームにイベントリスナーを追加しないでください。コンボボックスにデータを入力した後(Forループを終了した後)に追加してください。

selectTransactionComboBox.SelectedIndexChanged += comboBox1_SelectedIndexChanged
于 2013-09-17T13:20:55.007 に答える