c# - 需要帮助创建控件来显示数据

标签 c# .net

我正在编写一个 .NET WinForms 应用程序,它需要以格式良好、用户友好的方式显示结果列表。这是我希望显示数据的方式。

alt text http://img398.imageshack.us/img398/4336/imgdyu.png

该表必须支持相当数量的数据(>= 200 个单独的“数据 block ”),并且需要相当快。我不确定完成此操作的最简单方法,我希望得到一些指导和建议。我创建了一个快速原型(prototype)自定义控件,它只使用了一堆相互堆叠的文本框。它工作得相当好,但 Windows 太快用完了文本框的句柄。我可以创建一个自定义文本框控件,但这会很耗时,我想知道是否有替代解决方案的建议?谢谢。

最佳答案

您可以为此使用第三方控件(也许),但以下是为什么这可能不是一个好主意的一些原因:

  1. 第三方控制需要花钱
  2. 第三方控件往往很糟糕
  3. 第三方控件要求您分发至少一个额外的 DLL,您通常无法控制它
  4. 即使第三方控件最终可以满足您的需求,您也需要花费一些时间和精力来弄清楚如何使用它,以及如何将其锤炼成您需要的形状

对于任何不寻常的事情(比如你正在做的事情),编写你自己的 UserControl 是最好的方法,原因如下:

  1. 编写自己的 UserControl 绝对是您在 .Net 中可以做的最有趣的事情
  2. 你必须学习一些东西才能做好这件事,但你获得的知识可以立即转移到其他问题和项目中(而你在使用 Initrode 的 Infinite Wonderfulness Gridifier 方面学到的任何东西只会帮助你使用该特定控件)
  3. 您的应用程序不会有任何额外的分发
  4. 完全控制源代码
  5. 永远免费(向 Evony 致歉)
  6. 没有极限 - 使用任何第三方控件,您最终都会遇到它无法做到的事情,但如果您自己动手,您可以真正做到任何您想做的事

您的特定问题(在您的问题中得到了很好的描述,多亏了图形)作为一个主要由所有者绘制的 UserControl(混合了一个或两个 TextBox)很容易解决。 System.Drawing.Graphics 对象所需的唯一方法是 DrawRectangle、FillRectangle、MeasureString 和 DrawString。您甚至不需要任何文档,因为 Intellisense 将为您提供所需的一切。

如果您遇到麻烦,我会为您写一份巧克力 cookies 。 :)

更新:由于您需要所有文本都是可选的,因此这种方法有点复杂。实现你自己的文本框类型的功能是一个巨大的痛苦,但一个相对简单的解决方案是在用户点击它时在任何包含文本的矩形的顶部添加一个真正的多行文本框,并将矩形的文本(预选)到文本框中。当这个临时文本框失去焦点(LostFocus)时,您将编辑的文本绘制到矩形中并删除文本框。这样您的用户控件中一次只有一个文本框。

此版本将花费您两个 cookie。

更新 2:这是一个 simple application它演示了如何使用单个 TextBox 使整个控件可选择和编辑。这是 source code .

关于c# - 需要帮助创建控件来显示数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1342689/

相关文章:

c# - Visual Studio 连接字符串- 相对文件路径?

c# - 如何使用 C++ 杀死 C++ 进程并让它在杀死之前做一些事情

c# - 与来自 C# 的 Java 代码交互

c# - C# 数组是否保证按顺序存储在内存中?

c# - 使用 System.Action 的成本有多高?

c# - MVC Url Helper 生成 &amp

C# 问题 : Why cannot I assign a string directly to a class inheriting System. IFormattable 或 System.FormattableString 而它们本身可以吗?

.net - 如何创建类库的版本以支持 .NET Framework 的多个版本?

c# - 如何在 Entity Framework 中重命名迁移表?

.NET C# 读取Excel文件DateTime列读取少1秒,为什么?