创建更加用户友好的显示。我的想法,有可能吗?

时间:2011-12-02 21:45:59

标签: c# winforms

我正在研究我的程序,但我想将输出更改为更友好的数据显示。目前我正在使用一个文本框,它只是打印出所有信息。我想改变它,因为我想要每个记录旁边的删除按钮,我认为不能用于文本框。

我正想着一个带有某些行的显示器,这些行通过主窗口拉伸。每行将显示我的显示应显示的所有内容,但是条目ID。每行必须能够消失并显示,具体取决于条目是否被删除或添加。

你有意见吗?

有没有办法用行显示来显示每个数据?我可以使用VS中的哪个工具来执行此操作?

这就是我现在显示数据的方式:

enter image description here

1 个答案:

答案 0 :(得分:2)

您的“条目”项目看起来像是根据图片具有不同的属性。条目ID#2有四个项目,而其他项目有三个。在此基础上,您可以使用ListBoxDrawMode = 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);
    }
  }
}

结果:

enter image description here