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

本文关键字:控件 元素 文本 组件 自定义 | 更新日期: 2023-09-27 18:27:44

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

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

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

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

任何关于如何自己编写代码的建议都将不胜感激,比如如何在给定的点上计算字符。我应该为每个可能字符的测量宽度创建一个查找表吗?或者在MeasureString中循环以考虑格式化空间?

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

您可以在本文/项目中找到所需的代码。http://www.codeproject.com/Articles/161871/Fast-Colored-TextBox-for-syntax-highlighting

为什么它不能是控件?如果你使用的是Windows窗体,那么你很可能真的想要一个控件。

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

我想你的情况也差不多。如果没有,请解释你的目标。