使用Visual Studio 2008 SP1,最新的Compact框架和Windows Mobile 5。
我需要使用DrawString将字符串放在TextBox上。但是一旦我绘制字符串,TextBox Control就会将其写入。 (我知道,因为我略微偏离了控制器的边缘,我的文字是一半可见的(控制中的位置在哪里)并且一半消失了(它在控制器上。)
无论如何我可以让TextBox不刷新,所以我可以保留我的文字吗?
注意:我已经研究过子类化TextBox,只是让它绘制我的文本。但是,CompactBox框架中无法捕获TextBox类的Paint事件。如果你知道一种方法能够在没有Paint事件的情况下在TextBox上绘画,那么我很想继承TextBox类。
- 问题结束 -
万一你想知道为什么我需要这样做,这就是我正在做的事情:我需要一个文本框,其中必须输入两次数值。我需要一些明确的线索,他们必须再次输入数字。我想在文本框中显示一个略带灰色的文本,告诉用户重新输入。
我尝试过使用标签,超链接标签和其他文本框,但它们会模糊下面的文字(其默认值必须部分可见)。
如果有人知道重新进入的不同方式也会很棒!
Vacano
答案 0 :(得分:1)
您可以以不同的方式解决此问题。听起来你想要剪切他们之前的输入,所以他们必须再次输入它。
我不知道CF最近取得了哪些进展,但如果有一个RichTextBox,那么这个方法就可以了。如果不是,则必须从基本控件开始编写自己的实现。
如果您想要允许它们退出预订,例如自由格式文本,则此解决方案将无效。如果他们输入错误或输入不同的字符而不是丢弃他们输入的内容,你就不会丢弃按键,而是删除当前和剩余的灰色字符,从而允许他们输入没有轮廓。
答案 1 :(得分:1)
正如我在封闭的骗局中回答的那样:
你在哪里做DrawText?在TextBox父级?如果是这样,那么这将是预期的行为。为什么不创建一个自定义的TextBox控件,第一次绘制(通过覆盖OnPaint)值,可能是浅灰色,然后第二次用黑色再次绘制它?