sar*_*own 5 .net c# listbox multiple-columns winforms
我想在我的ListBox中有多列。以下是我在应用程序中获得的图片示例。
我实际上有大约7列,但是只打印了两列,以使其更易于理解。
因此,第一列会说date
,第二列会说name
。如您所见,数据没有进入自己的列。
这是我的代码:
this.listBox1 = new System.Windows.Forms.ListBox();
this.SuspendLayout();
//
// listBox1
//
this.listBox1.FormattingEnabled = true;
this.listBox1.HorizontalScrollbar = true;
foreach (XmlNode xn in xnList)
{
string date = xn.OfType<XmlNode>().FirstOrDefault(n => n.Name == "Date").FirstChild.Value;
string id = xn.OfType<XmlNode>().FirstOrDefault(n => n.Name == "ID").FirstChild.Value;
if (date == cari)
{
this.listBox1.Items.AddRange(new object[] {
//dateBox.Text,
dateBox.Text + "\r\n" + date});
this.listBox1.Items.AddRange(new object[] {
"sarabrown"});
}
}
this.listBox1.Location = new System.Drawing.Point(12, 28);
this.listBox1.MultiColumn = true;
this.listBox1.Name = "listBox1";
this.listBox1.ScrollAlwaysVisible = true;
this.listBox1.Size = new System.Drawing.Size(300, 95);
this.listBox1.TabIndex = 0;
this.listBox1.ColumnWidth = 100;
//
// Form3
//
this.ClientSize = new System.Drawing.Size(400, 273);
this.Controls.Add(this.listBox1);
this.Name = "Form3";
this.ResumeLayout(false);
Run Code Online (Sandbox Code Playgroud)
我发现这个代码存在,但它会创建一个列表框,看起来就像如上图。有谁知道吗?
only的MultiColumn
属性ListBox
有助于避免垂直滚动,因此只是将溢出的项目堆叠到下一列中。默认情况下,您的要求在 .NET 中不可用。因此,您可能必须构建自己的自定义控件来支持它。
顺便说一句,GridView
是你的朋友..你需要的很容易使用GridView
. 例如,使其简单化(您可能需要完全调整以适应您的问题)
protected void MyGridView_PreRender(object sender, EventArgs e)
{
DataSet myDataSet = new DataSet();
myDataSet.ReadXml(new StringReader(myXmlDoc.OuterXml));
GridView gv = (GridView)sender;
gv.DataSource = myDataSet;
gv.DataBind();
}
Run Code Online (Sandbox Code Playgroud)
更新:
您可能想签出ListView
而不是GridView
或ListBox
。它比GridView
.
随着ListView
你也可以把其他控件像复选框不同列。
看看这个例子给你一个想法。
或者这个更简单:在 C# 中使用 ListView 控件。