2012-03-09 7 views
0

現在、リストボックスとcontextMenuStripを使用してアイテムを右クリックした後、アイテムのインデックスをどのようにリストボックスから取得できますか?ListBoxからアイテムインデックスを取得する方法

My機能:

private void contextMenuStripOption1_Click(object sender, EventArgs e) 
{ 
    if (listBoxFiles.SelectedIndex == -1) 
    { 
     return; 
    } 

    Point ptCursor = Cursor.Position; 
    int itemIndex = listBoxFiles.IndexFromPoint(ptCursor); 
} 

削除機能:

private void contextMenuStripDelete_Click(object sender, EventArgs e) 
{ 
    if (listBoxFiles.SelectedIndex == -1) 
    { 
     return; 
    } 

    listBoxFiles.Items.RemoveAt(listBoxFiles.SelectedIndex); 
} 
+1

なぜあなたはlistBoxFiles.SelectedIndexを使用できませんか? – Coltech

+0

[C#RightBoxでListBoxアイテムを選択するにはどうすればいいですか?](http://stackoverflow.com/questions/9229034/c-sharp-how-to-select-listbox-item-with-a-rightclick) –

+0

それは助けてくれてありがとう! – falukky

答えて

3

は割り当てないでくださいListBoxへのContextMenuStrip。あなたが選択したインデックス

に決定した後、代わりに、プログラムでそれを開く
int _selectedIndex; 

private void listBox1_MouseUp(object sender, MouseEventArgs e) 
{ 
    if (e.Button == MouseButtons.Right) { 
     _selectedIndex = listBox1.IndexFromPoint(e.Location); 
     if (_selectedIndex == -1) { 
      return; 
     } 
     contextMenuStrip1.Show(listBox1.PointToScreen(e.Location)); 
    } 
} 

UPDATE:

は今、あなたは、メニュー項目から、インデックスにアクセスすることができますが

private void contextMenuStripDelete_Click(object sender, EventArgs e) 
{ 
    listBoxFiles.Items.RemoveAt(_selectedIndex); 
} 

再計算する必要はありませんをクリック-1をテストするために使用されます。インデックスが-1の場合、コンテキストメニューはまったく開かれません。

+0

私はこれを理解していませんでした:あなたが選択したインデックスを決定した後、それをプログラムで開きます、どうすればいいですか? – falukky

+0

それは助けてくれてありがとう! – falukky

+0

これでアイテムのインデックスにアクセスできるようになりました。リストボックスのメニューに2つのオプションがあります(リストを参照)。 contextMenuStripDelete_Click関数? – falukky

0

コンテナコントロールを使用します。listBoxFiles.Items.IndexOf(listBoxFiles.SelectedItem)

関連する問題