我需要一个模仿TextBox控件但不是Control的类,而是一个自定义绘制的组件或元素。
创造一个感觉就像重新发明轮子,因为我到处都看到它们。例如,在任何现代Web浏览器中,文本框都不是控件。大多数Winforms控件,尤其是ToolStrip控件(如ToolStripTextBox),其元素的行为类似于文本框(但不是控件)。
我认为微软并没有为他们制造的每个控件重新发明轮子。但很可能他们的代码是专有的而不是公开的。
有人知道这个开源解决方案吗?我对GDI +绘图很有经验,但是当您考虑插入符号的定位,选择和插入时,文本字段并不是一项简单的任务。
关于如何自己编写代码的任何指示都将受到赞赏,例如如何在给定点计算字符。我应该为每个可能字符的测量宽度创建一个查找表吗?或者通过MeasureString循环以考虑格式化空间?
答案 0 :(得分:1)
您可以在本文/项目中找到所需的代码。 http://www.codeproject.com/Articles/161871/Fast-Colored-TextBox-for-syntax-highlighting
答案 1 :(得分:0)
为什么它不能成为控制?如果您使用的是Windows窗体,那么您更有可能想要一个控件。
可能出现此类问题的常见情况是网格编辑。而不是非控件TextBox,通常发生的是网格在网格中显示简单文本,直到用户关注该网格。此时,会插入一个临时的真实TextBox进行编辑。离开该单元格会抛出TextBox,并且Grid现在会显示可能更改的文本。
我认为你的情况很相似。如果没有,请解释你的目标。