2013-03-08 5 views
2

Я сделал это раньше, и у меня есть способ сделать это, но я хочу убедиться, что это лучший способ. У меня есть представление ListView в подробном представлении. У меня также есть кнопка. Я хочу, чтобы эта кнопка была включена, если выбран элемент (мультиселекция отключена). Элементы будут добавлены и удалены в это представление списка, но кнопка должна быть включена в любое время, когда есть выбранный элемент и в противном случае отключен.Константа Проверьте, выбран ли ListView

Мой обработчик события:

private void listView1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    if (listView1.SelectedItems.Count > 0) 
     button1.Enabled = true; 
    else 
     button1.Enabled = false; 
} 

Это то, что у меня есть, просто интересно, если это будет работать всегда и есть урод случаи, когда он терпит неудачу? Например, если я удаляю или добавляю вещи или что-то еще?

+0

Вы говорите, что «постоянный ч eck ", но вам действительно нужно только проверить, когда выбран элемент. Как выглядит ваш обработчик событий для выбора? –

+0

@Austin 'private void listView1_SelectedIndexChanged (отправитель объекта, EventArgs e) { if (listView1.SelectedItems.Count> 0) button1.Enabled = true; else button1.Enabled = false; } ' – vkapadia

+0

@vkapadia см. Мой ответ. Я пытался сделать это как можно быстрее. Надеюсь, вам понравится – kashif

ответ

3

Было бы лучше, если бы вы показали, что у вас есть, - но, короче говоря, вы начинаете с отключенной кнопки, а в окне списка selectedindexChanged event включаете кнопку, если в списке есть selectedItems.Count из 1. Disable если ни один элемент не выбран. Вот ссылка, которая может помочь: ListView selectedindexchanged

+0

Я разместил комментарий выше, который показывает, что у меня есть. – vkapadia

+0

В этом случае то, что вы уже делаете, так же хорошо, как я знаю :) – NDJ

+1

@kashif - как я люблю resharper, просто потому, что он делает предложение, не делает его всегда лучше - можно утверждать, что способ Op если лучше, - например, если вы затем решите что-то еще в дополнение к включению кнопки. (Хотя я согласен, в этом случае он, вероятно, более аккуратный в одной строке) – NDJ

2
public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent();    
    } 
    private void Form1_Load(object sender, EventArgs e) 
    { 
     for (int i = 0; i < 9; i++) 
     { 
      listView1.Items.Add("kashif"); 
     } 
     button1.Enabled = false;    
    } 
    private void listView1_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e) 
    { 
     button1.Enabled = listView1.SelectedItems.Count > 0; 
    } 
    private void button2_Click(object sender, EventArgs e) 
    { 
     foreach (ListViewItem v in listView1.SelectedItems) 
     { 
      v.Remove(); 
     } 
    } 
} 

Перед Button2 Нажмите

После Button2 нажмите

enter image description here

+0

+1 - good ol resharper :-) – NDJ

+0

button1.Enabled запрашивает логическое, тогда зачем его включать, если условие, когда listView1.SelectedItems.Count> 0 возвращает bool. вот как он мог бы сделать этот код лучше – kashif

+0

@kashif У меня более сложный код удаления, и вот что его нарушает. – vkapadia

Смежные вопросы