我正在研究我的程序,但我想将输出更改为更友好的数据显示。目前我正在使用一个文本框,它只是打印出所有信息。我想改变它,因为我想要每个记录旁边的删除按钮,我认为不能用于文本框。
我正想着一个带有某些行的显示器,这些行通过主窗口拉伸。每行将显示我的显示应显示的所有内容,但是条目ID。每行必须能够消失并显示,具体取决于条目是否被删除或添加。
你有意见吗?
有没有办法用行显示来显示每个数据?我可以使用VS中的哪个工具来执行此操作?
这就是我现在显示数据的方式:
答案 0 :(得分:2)
您的“条目”项目看起来像是根据图片具有不同的属性。条目ID#2有四个项目,而其他项目有三个。在此基础上,您可以使用ListBox
和DrawMode = OwnerDrawVariable
。
简单ListBox示例:
private List<int> entries = new List<int>();
public Form1() {
InitializeComponent();
entries.Add(3);
entries.Add(4);
entries.Add(3);
listBox1.DrawMode = DrawMode.OwnerDrawVariable;
listBox1.MeasureItem += new MeasureItemEventHandler(listBox1_MeasureItem);
listBox1.DrawItem += new DrawItemEventHandler(listBox1_DrawItem);
}
private void listBox1_MeasureItem(object sender, MeasureItemEventArgs e) {
if (e.Index > -1)
e.ItemHeight = (((int)listBox1.Items[e.Index]) * 16) + 8;
}
private void listBox1_DrawItem(object sender, DrawItemEventArgs e) {
e.DrawBackground();
if (e.Index > -1) {
ControlPaint.DrawBorder3D(e.Graphics, e.Bounds);
for (int i = 0; i < (int)listBox1.Items[e.Index]; i++) {
TextRenderer.DrawText(e.Graphics,
"Item #" + i.ToString(),
e.Font,
new Point(e.Bounds.Left + 4, (e.Bounds.Top + 4) + (i * 16)),
Color.Black);
}
}
}
结果: