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

标签 c# winforms

<分区>

我正在开发我的程序,我考虑将输出更改为对用户更友好的数据显示。目前我正在使用一个简单地打印出所有信息的文本框。我想更改它,因为我想在每条记录旁边添加删除按钮,我认为它不能与文本框一起使用。

我在想一个带有行的显示,某种形式,它延伸到主窗口。每行将显示我的显示器应该显示的所有内容,但条目 ID。每行必须能够消失和显示,具体取决于条目是删除还是添加。

你有什么想法吗?

有没有一种方法可以像看起来一样用行显示每个数据?我可以使用 VS 中的哪个工具来执行此操作?

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

enter image description here

最佳答案

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

结果:

enter image description here

关于c# - 创建更加用户友好的显示。我的想法,可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8363103/

相关文章:

c# - 如何在 WebBrowser 控件中提交表单?

c# - 带有 C# 套接字的字符串中的奇怪字符

c# - HttpClientFactory如何注入(inject)类我无法控制核心2.1

c# - 激活单实例应用的主窗体

c# - 如何以编程方式单击节点?

c# - 删除文本窗口窗体上的白色轮廓

c# - 使用数据类型为longblob的mysql将图像插入数据库

c# - GC.KeepAlive 保留上下文

c# - LINQ 是否使用 DataRelations 来优化联接?

vb.net - 在标题栏 VB.NET 中添加自定义按钮