我有一個ListView和一個按鈕,從列表視圖中刪除項目。當他們沒有選擇任何項目時,該按鈕需要被禁用,但是當它們被選中時被啓用。我試過事件的不同組合,但無法找到一個正確禁用按鈕...C# - ListView項選擇隊列
當我關閉按鈕時,列表視圖失去焦點,我不能因爲要刪除的項點擊按鈕,他們需要在列表視圖之外單擊。
我希望有人在Visual Studio中有更多的經驗可以幫助我找到正確的listview事件組合,以根據是否啓用和禁用按鈕選擇一個項目。
我有一個ListView和一個按鈕,從列表視圖中刪除項目。當他們沒有選擇任何項目時,該按鈕需要被禁用,但是當它們被選中時被啓用。我試過事件的不同組合,但無法找到一個正確禁用按鈕...C# - ListView項選擇隊列
當我關閉按鈕時,列表視圖失去焦點,我不能因爲要刪除的項點擊按鈕,他們需要在列表視圖之外單擊。
我希望有人在Visual Studio中有更多的經驗可以幫助我找到正確的listview事件組合,以根據是否啓用和禁用按鈕選擇一個項目。
只需訂閱事件ItemSelectionChanged
這樣的(例如,在構造函數):
listView1.ItemSelectionChanged += OnListViewItemSelectionChanged;
而且在事件的方法啓用/禁用喜歡你的按鈕:
private void OnListViewItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e)
{
button1.Enabled = (listView1.SelectedItems.Count > 0);
}
我試過了,但是當我點擊列表視圖外的按鈕,即使它帶走了選擇它不執行。 – mowwwalker 2011-12-27 08:13:33
@Walkerneo:項目仍被選中,但選擇不再顯示。如果您希望顯示選擇內容,即使控件尚未獲得焦點,也可以在構造函數中添加以下行:'listView1.HideSelection = false;'。 – Fischermaen 2011-12-27 08:15:44
太棒了,謝謝。現在有什麼辦法擺脫那惱人的虛線邊框?最後一個選擇的項目,即使它沒有被選中了。 – mowwwalker 2011-12-27 08:26:46
我只是測試一些代碼要做到這一點:
private void Form1_Load(object sender, EventArgs e)
{
//Added some dummy items
for(int i=0; i<10; i++)
listView1.Items.Add("Item"+i.ToString());
//Disable the button
button1.Enabled = false;
}
private void listView1_SelectedIndexChanged(object sender, EventArgs e)
{
button1.Enabled = (listView1.SelectedItems.Count > 0);
}
private void button1_Click(object sender, EventArgs e)
{
listView1.Items.Remove(listView1.SelectedItems[0]);
}
而這是工作得很好。
如果你有一些問題,你可以請在這裏發表您的代碼。
的WinForms,WPF,MVC或Web表單? – ivowiblo 2011-12-27 08:00:27
更新我覺得標籤,但WinForms的 – mowwwalker 2011-12-27 08:01:39
何時改變的項目? – ivowiblo 2011-12-27 08:05:40