自定义文本框组件/元素(不是控件)

时间:2012-03-12 16:59:12

标签: c# winforms text components gdi+

我需要一个模仿TextBox控件但不是Control的类,而是一个自定义绘制的组件或元素。

创造一个感觉就像重新发明轮子,因为我到处都看到它们。例如,在任何现代Web浏览器中,文本框都不是控件。大多数Winforms控件,尤其是ToolStrip控件(如ToolStripTextBox),其元素的行为类似于文本框(但不是控件)。

我认为微软并没有为他们制造的每个控件重新发明轮子。但很可能他们的代码是专有的而不是公开的。

有人知道这个开源解决方案吗?我对GDI +绘图很有经验,但是当您考虑插入符号的定位,选择和插入时,文本字段并不是一项简单的任务。

关于如何自己编写代码的任何指示都将受到赞赏,例如如何在给定点计算字符。我应该为每个可能字符的测量宽度创建一个查找表吗?或者通过MeasureString循环以考虑格式化空间?

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

为什么它不能成为控制?如果您使用的是Windows窗体,那么您更有可能想要一个控件。

可能出现此类问题的常见情况是网格编辑。而不是非控件TextBox,通常发生的是网格在网格中显示简单文本,直到用户关注该网格。此时,会插入一个临时的真实TextBox进行编辑。离开该单元格会抛出TextBox,并且Grid现在会显示可能更改的文本。

我认为你的情况很相似。如果没有,请解释你的目标。