0

これまでのところ、ダブルクリックイベントでここまで到達し、感嘆符アイコンを追加しようとするとオーバーロードエラーが発生することを除いて、メッセージボックスを正確に表示することができましたが、私の主な問題は、選択したリストボックス項目を取得するためのコーディング方法ですメッセージボックスからOKボタンをクリックすると削除されますか?

private void statesListBox_MouseDoubleClick(object sender, MouseEventArgs e)
{
    //Select a state to remove from list box
    if (statesListBox.SelectedItem != null)

    if (statesListBox.SelectedItem.ToString().Length != 0)

    MessageBox.Show("Delete" + " " + (statesListBox.SelectedItem.ToString()) 
                    + "   " + "Are you sure?", "Delete" + " " + 
                    (statesListBox.SelectedItem.ToString()));
    if (MessageBoxResult.OK)
}
4

2 に答える 2

0

アイテムを削除できるように、SelectedIndicesプロパティをキャプチャする必要があります。このプロパティを直接使用すると、.RemoveAt呼び出しによって選択が変更され、操作できなくなります。同様に、複数のアイテムを削除する場合は、インデックスの逆順でコレクションを繰り返す必要があります。そうしないと、ループによって最初のアイテムの後に間違ったアイテムが削除されます。これでうまくいくはずです。

int[] indices = (from int i in statesListBox.SelectedIndices orderby i descending select i).ToArray();

foreach (int i in indices)
    statesListBox.Items.RemoveAt(i);
于 2012-05-25T00:33:28.023 に答える
0
private void statesListBox_MouseDoubleClick(object sender, MouseEventArgs e)
{
    //Select a state to remove from list box
    if (statesListBox.SelectedItem != null)
        return;

    if (statesListBox.SelectedItem.ToString().Length != 0)
    {            
        if (
            MessageBox.Show("Are you sure you want to delete " + 
                            statesListBox.SelectedItem.ToString() + "?", "Delete" 
                            + statesListBox.SelectedItem.ToString(), 
                            MessageBoxButtons.YesNo, MessageBoxIcon.Information) 
            == DialogResult.Yes
       )
        statesListBox.Items.Remove(statesListBox.SelectedItem);
    }
}

まず最初に。

上記のコードは、[はい] を押すと、選択したアイテムを削除します。あなたは質問をしているので、答えはイエスとノーの形をとることができます.

次に、 RJLohan answerAny idea what is causing the overload error when I try adding the exclamation icon to my message box? I believe it is a error caused by the toStringに与えられたコメント ( ) によると、過負荷エラーがあります。少し考えた後、なぜ、どのようなエラーが発生しているのかがわかったと思います

MessageBox.Showあなたはとして呼び出す必要があります

MessageBox.Show Method (String, String, MessageBoxIcon)

正しい構文

MessageBox.Show Method (String, String, MessageBoxButtons, MessageBoxIcon)

それがエラーが言っているに違いない理由です"The best overload method match for 'System.Windows.Forms.MessageBox.Show(string, string, System.Windows.MessageBoxButtons)' has some invalid arguments."

またはそのようなもの。

于 2012-05-25T05:31:48.340 に答える