リストボックスに複数列を入れたいのですが。以下は、アプリケーションで取得した画像の例です。
実は7列くらいありますが、わかりやすくするために2列しか印刷していません。
したがって、最初の列はdate
と表示され、2番目の列は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);
このコードを見つけました そこに 、しかしそれは上の写真のように見えるリストボックスを作成します。これについて知っている人はいますか?
ListBoxのMultiColumnプロパティは、垂直スクロールを回避するのに役立つだけなので、オーバーフローしたアイテムを次の列にスタックするだけです。 .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();
}
更新:
GridViewやListBoxの代わりにListViewをチェックアウトすることをお勧めします。
これをチェックしてください 例 アイデアを出してください。
またはもっと単純なもの: C#でListViewコントロールを使用 。
これを使用すると、チェックボックスなどのさまざまな列に他のコントロールを配置することもできます。
これはGridViewよりも比較的軽量です。
C#のListBoxのMutliColumnの場合、これは正常に機能しています
listBox1.Items.AddRange(
new object[]
{
"Name","Aman"
}
);