1

のこの選択されたインデックスイベントがありますListBox:

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{    
    if (listBox1.SelectedItem != null)
    {
        label4.Text = listBox1.SelectedItem.ToString();
        string startTag = "Url: ";
        string endTag = " ---";
        int startTagWidth = startTag.Length;
        int endTagWidth = endTag.Length;
        int index = 0;
        index = label4.Text.IndexOf(startTag, index);
        int start = index + startTagWidth;
        index = label4.Text.IndexOf(endTag, start + 1);
        string g = label4.Text.Substring(start, index - start);
        label4.Text = g;
        mainUrl = g;
    }
}

でインデックス(アイテム)を選択した後、ListBoxこのインデックスをマウスで右クリックすると、何かが実行されるようになります。しかし、フォームまたはフォームの他の領域でマウスの右クリックボタンを作成しても、ListBox何もしません。マウスが選択したインデックス上にある場合のみ。

私がする必要があるのは、ユーザーが からアイテムを削除/削除できるようにすることListBoxです。ユーザーがマウスの右ボタンをクリックしたときにそれを行う方法の最良のロジックは何かわかりません。

表示 ユーザーが最初にアイテムを選択したとき、マウスがこの選択されたアイテムの上/上にある場合にのみ作成しますか? ユーザーが任意の項目でマウスの右ボタンをクリックすると、それが自動的に選択されて何かが実行されることを示しますか?

どちらの方法が優れているか、ロジックとその方法がわかりません。

4

1 に答える 1

2

Listbox の MouseDown をサブスクライブし、クリックIndexFromPointした現在の項目が選択された項目であるかどうかを確認するために使用します。

次に例を示します。

private void listBox1_MouseDown(object sender, MouseEventArgs e)
{
        if (e.Button == System.Windows.Forms.MouseButtons.Right)
        {
            int index = listBox1.IndexFromPoint(e.Location);
            {
                if (index == listBox1.SelectedIndex)
                {
                    MessageBox.Show("Selected item clicked");
                }
            }
        }
}
于 2013-02-16T12:11:47.670 に答える