2010-07-07 53 views
0

列表框中始終保留至少一個項目。我希望當用戶單擊列表框的空白區域時,選擇應該被清除。這個怎麼做?點擊空白區域時清除列表框選擇

我想複製Opera Notes作爲我的應用程序的一部分。首先,我正在使用綁定的DataGridView,現在我在左窗格上使用綁定的ListBox

回答

3

處理ListBox.MouseDown事件。

調用ListBox.IndexFromPoint,從MouseDown事件的MouseEventArgs參數傳遞Location屬性。

這應該返回被點擊的項目的索引,或者如果點擊位於空白區域,則應該返回ListBox.NoMatches。

如果返回值是ListBox.NoMatches,請將ListBox.SelectedIndex屬性設置爲-1以清除選擇。

+0

謝謝!我用listbox做了,我可以用datagrid視圖做同樣的事嗎? – SMUsamaShah 2010-07-17 21:50:15

+0

請注意,您不必爲獲取MouseEventArgs而爲MouseDown創建新的處理程序。在現有的Click處理程序中,您可以將e轉換爲新的MouseEventArgs變量,並從中獲取位置。 – 2011-01-11 17:06:29

1

Avalanchis先生已經回答了這個問題。我只是添加必要的代碼來遵循他所建議的步驟。希望顯式代碼會有所幫助。

private void listBox1_MouseDown(object sender, MouseEventArgs e) 
    { 
     Point pt = new Point(e.X, e.Y); 
     int index = listBox1.IndexFromPoint(pt); 

     if (index <= -1) 
     { 
      listBox1.SelectedItems.Clear(); 
     } 


    }