2014-08-27 32 views
0

我在C#.net中创建了一个列表视图,其中包含少量的项目。我想禁用一些listview的项目。如何禁用使用C#.net的listview的特定项目?

我已经通过listview的每个属性,但我没有得到正确的方式来禁用listview项目。 请帮帮我!

以下是一小段代码片段:

private void lvTenderCode_DoubleClick(object sender, EventArgs e) { 
    // setLoadModify1(lvTenderCode.Items[lvTenderCode.FocusedItem.Index].SubItems[0].Text, false); 
    //clsSettings.setMDIChild(FrmList.Instance(), MainMenu.publicMDIParent); 
    string ss; 
    ss = lvTenderCode.Items[lvTenderCode.FocusedItem.Index].SubItems[0].Text; 
    if (ss == "Material Requisition") { 
     // FrmBoqOptionEntryNew sForm = new FrmBoqOptionEntryNew(); 
     // sForm.ShowDialog(); 
     // this.Close(); 
     //Variables.StrBoqMessage = "StrBoqTreeView"; 
     clssetting.Settings.setMDIChild(FrmMaterialRequisition.Instance(), FrmMainMenu.publicMDIParent); 
     } 
     if (ss == "Purchase Indent") { 
      // FrmBoqOptionEntryNew sForm = new FrmBoqOptionEntryNew(); 
      // sForm.ShowDialog(); 
      // this.Close(); 
      //Variables.StrBoqMessage = "StrBoqTreeView"; 
      clssetting.Settings.setMDIChild(FrmPurchaseIndent.Instance(), FrmMainMenu.publicMDIParent); 
     } 
     if (ss == "Quotation") { 
      // FrmBoqOptionEntryNew sForm = new FrmBoqOptionEntryNew(); 
      // sForm.ShowDialog(); 
      // this.Close(); 
      //Variables.StrBoqMessage = "StrBoqTreeView"; 
      clssetting.Settings.setMDIChild(FrmQuotationVoucher.Instance(), FrmMainMenu.publicMDIParent); 
     } 
     if (ss == "Purchase Order") { 
      // FrmBoqOptionEntryNew sForm = new FrmBoqOptionEntryNew(); 
      // sForm.ShowDialog(); 
      // this.Close(); 
      //Variables.StrBoqMessage = "StrBoqTreeView"; 
      clssetting.Settings.setMDIChild(FrmPurchaseOrder.Instance(), FrmMainMenu.publicMDIParent); 
     } 
     if (ss == "Spot Purchase Order") { 
      // FrmBoqOptionEntryNew sForm = new FrmBoqOptionEntryNew(); 
      // sForm.ShowDialog(); 
      // this.Close(); 
      //Variables.StrBoqMessage = "StrBoqTreeView"; 
      clssetting.Settings.setMDIChild(FrmSpotPurchaseOrder.Instance(), FrmMainMenu.publicMDIParent); 
     } else if (ss == "Exit") { 
      FrmsmallQuit sForm = new FrmsmallQuit(); 
      sForm.Location = new Point(600, 627); 
      sForm.ShowDialog(); 
      if (FrmsmallQuit.strMsg == "YES") { Close(); } 
      else { return; }    
     } 
    } 
+1

请定义禁用。移除它们是否符合您的需求? – apomene 2014-08-27 10:18:58

+0

http://social.msdn.microsoft.com/Forums/vstudio/en-US/d3c68d8a-89d3-4de6-b9f9-4d617ffdeb77/disable-item-selection-of-the-listview检查这个 – 2014-08-27 10:20:06

+0

不,我不想要删除项目我只是想在运行时显示一些listview的项目,其余的项目不能访问的用户我的意思是说我想禁用。 有没有办法做到这一点? – 2014-08-27 11:57:58

回答

0

如果你说“禁用”不显示的意思是,你应该检查过滤器选项。

创建一个CollectionView,然后使用该视图的Filter属性。

有关示例,请参见:enter link description here

+0

过滤选项是否作为Listview的属性? – 2014-08-27 12:05:15

+0

查看编辑答案 – 2014-08-27 13:13:45

+0

我已经通过你的链接,但它不符合我的要求, 我希望能够在列表视图中访问一些项目,这意味着从这些项目我可以打开任何表单和一些项目无法访问。 – 2014-08-28 07:25:16

0

没有一个单一的财产,可以让你做到这一点。

通常情况下,采取的办法是处理该指数变化的事件,并立即Selected属性设置为false(即给用户的是被“unselectdable”外观):

http://msdn.microsoft.com/en-us/library/system.windows.forms.listview.itemselectionchanged(v=vs.110).aspx

private void ListView1_ItemSelectionChanged(Object sender, ListViewItemSelectionChangedEventArgs e) { 
     // If 'e' is the item you want to 'disable' 
     e.Item.Selected = false; 
    } 
+0

好的,谢谢你的回复,但我想禁用项目载入事件有无论如何做到这一点? – 2014-08-27 10:29:20

+0

你在说什么? – 2014-08-27 10:32:21

+0

我的意思是说,我想禁用加载事件的列表视图项目 – 2014-08-27 10:34:30

相关问题