我正在开发我的程序,我考虑将输出更改为对用户更友好的数据显示。目前我正在使用一个简单地打印出所有信息的文本框。我想更改它,因为我想在每条记录旁边添加删除按钮,我认为它不能与文本框一起使用。
我在想一个带有行的显示,某种形式,它延伸到主窗口。每行将显示我的显示器应该显示的所有内容,但条目 ID。每行必须能够消失和显示,具体取决于条目是删除还是添加。
你有什么想法吗?
有没有一种方法可以像看起来一样用行显示每个数据?我可以使用 VS 中的哪个工具来执行此操作?
这就是我现在显示数据的方式:
根据图像,您的“条目”项目看起来具有不同的属性。条目 ID #2 有四个项目,而其他条目有三个。基于此,您可以将 ListBox
与 DrawMode = OwnerDrawVariable
一起使用。
简单的列表框示例:
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);
}
}
}
结果: