2016-07-22 3 views
0

В основном у меня есть contextmenustrip и listview, и я добавляю функции в контекст menustrip, например, для удаления обновлений и т. Д., Но я не хочу, чтобы это меню открыто без щелчка и выберите любой элемент в listview, как я могу это сделать?Как я могу отключить контекстное меню, если в списке нет элемента, выбранного в списке?

#region listview fonksiyonları 
listView1.FullRowSelect = true; 
     listView1.View = View.Details; 
     listView1.Columns.Add("Versiyon No", 133, HorizontalAlignment.Left); 
     listView1.Columns.Add("Açıklama", 200, HorizontalAlignment.Left); 
     listView1.Columns.Add("Tarih", 154, HorizontalAlignment.Left); 
     #endregion 
    #region listviewde txt dosyalarını gösterme 
     string[] dosyalar = System.IO.Directory.GetFiles(masaustu + "\\Versiyonlar"); 
string k = ""; 
int deger = 0; 
     foreach (var item in dosyalar) 
     { 
      ListViewItem lili = new ListViewItem(); 
deger=item.LastIndexOf("\\"); 
     k = item.Remove(0,deger); 
     k = k.Remove(0, 1); 
     lili.Text = k; 
     StreamReader oku = new StreamReader(masaustu + "\\" + "Versiyonlar" + "\\" + k); 
string OkunanVeri = oku.ReadToEnd(); 
string[] dizi = OkunanVeri.Split(new string[] { ";", "$" }, StringSplitOptions.RemoveEmptyEntries); 
lili.SubItems.Add(dizi[0]); 
     lili.SubItems.Add(dizi[1]); 
     listView1.Items.Add(lili); 
     }   
     } 


#endregion 
     #region txt içindekileri textboxda göstermek 
     private void listView1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    liste frm = new liste(); 
    try 
    { 
     string a = ""; 
     a = ""; 
     a = listView1.SelectedItems[0].SubItems[0].Text; 
     StreamReader oku = new StreamReader(masaustu + "\\" + "Versiyonlar" + "\\" + a); 
     string OkunanVeri = oku.ReadToEnd(); 
     string[] dizi = OkunanVeri.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries); 
     foreach (var item in dizi) 
     { 
      textBox1.Text = OkunanVeri; 
     } 
     oku.Close(); 
    } 
    catch 
    { 
    } 
} 

это ListView коды я не уверен, если это может помочь вам, но вы можете проверить его

ответ

0

Вы можете подписаться на событие открытия ContextMenuStrip и если нет выбора в вашем наборе списке следует e.Cancel to true, который предотвратит открытие контекстного меню.

Посмотрите на https://msdn.microsoft.com/de-de/library/ms229721(v=vs.110).aspx для более подробной информации!

У вас есть ContextMenuStrip CMS, где вы добавляете EventHandler либо в Windows Forms проектировщиком или в коде

cms.Opening += new System.ComponentModel.CancelEventHandler(this.cms_Opening); 

Внутри вашего EventHandler проверить, если вы получили деталь в вашем ListView, выбранный для определения, если вы хотите, чтобы ваш ContextMenu открывать или закрывать.

void cms_Opening(object sender, System.ComponentModel.CancelEventArgs e) 
{ 
    // This event handler is invoked when the ContextMenuStrip 
    // control's Opening event is raised. 

    // Set Cancel to true to prevent the cms to be opened. 
    e.Cancel = listView1.Selected == null; 
} 

Итак, если у вас есть выбранный элемент в вашем спискеView1, ваше контекстное меню будет открыто, иначе оно не будет отображаться.

+0

спасибо, но я не могу понять много cna oyu, дайте мне пример тоже? @SomeCoder –

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