2015-11-08 95 views
0

我有一个可怕的时间试图弄清楚如何列出一个按钮与列表视图上的值与每个值。如何将按钮添加到WinForms的ListView中的列或子项目?

What I currently have

我需要的按钮全部更换为添加/编辑字符串值。最初的任务是用于列表框,但我认为唯一的方法是通过列表视图项目中的子项目来实现。谢谢。

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
     this.DefinedClassesLb.Columns.Add("Samples", 90); 
     this.DefinedClassesLb.Columns.Add("AddEdit", 60); 
     this.DefinedClassesLb.Columns.Add("Delete", 45); 

     ListViewItem item = new ListViewItem("1"); 
     item.SubItems.Add("add/edit"); 
     item.SubItems.Add("x"); 
     this.DefinedClassesLb.Items.Add(item); 

     ListViewItem item2 = new ListViewItem("2"); 
     item2.SubItems.Add("add/edit"); 
     item2.SubItems.Add("x"); 
     this.DefinedClassesLb.Items.Add(item2); 

     ListViewItem item3 = new ListViewItem("3"); 
     item3.SubItems.Add("add/edit"); 
     item3.SubItems.Add("x"); 
     this.DefinedClassesLb.Items.Add(item3); 

     ListViewItem item4 = new ListViewItem("4"); 
     item4.SubItems.Add("add/edit"); 
     item4.SubItems.Add("x"); 
     this.DefinedClassesLb.Items.Add(item4); 

     ListViewItem item5 = new ListViewItem("5"); 
     item5.SubItems.Add("add/edit"); 
     item5.SubItems.Add("x"); 
     this.DefinedClassesLb.Items.Add(item5); 

     ListViewItem item6 = new ListViewItem("6"); 
     item6.SubItems.Add("add/edit"); 
     item6.SubItems.Add("x"); 
     this.DefinedClassesLb.Items.Add(item6); 

     ListViewItem item7 = new ListViewItem("7"); 
     item7.SubItems.Add("add/edit"); 
     item7.SubItems.Add("x"); 
     this.DefinedClassesLb.Items.Add(item7); 

     this.DefinedClassesLb.View = View.Details; 
     this.DefinedClassesLb.HeaderStyle = ColumnHeaderStyle.None; 

    } 
} 
+1

为什么不datagridview?那么只需将所需的列声明为按钮列 – Nissim

+0

不幸的是,您可能需要挖掘OwnerDraw来完成此操作。见[这个答案](http://stackoverflow.com/a/4545340/90476)中的'ListViewExtender'类。 –

+0

'我有一段可怕的时间...' - 我建议你看一下WPF作为winforms的替代品,这样你就可以做任何你需要的事情,而不会浪费大量时间来对抗古代框架的不适用性。 –

回答

0

ListView控制是其它控件的可怕主机。它根本没有和他们一起玩。具体而言,它不能正确处理焦点,并且最特别的是不提供用于子控件的可滚动面板。最后一个问题是真正的杀手。

的选项有:

  1. 至于建议,使用DataGridView。使用ObjectListView。这是一个围绕标准.NET ListView的开源代码包装器,它给了它超强大的力量!像displaying buttons

enter image description here

即使在这里,按钮不托管 - 控件本身做了很多工作,使使一些外观和行为像一个按钮。

相关问题