在.NET Compact Framework中绘制TextBox

时间:2009-02-07 23:09:08

标签: .net compact-framework

是否可以在.NET Compact Framework中绘制TextBox控件?我想在它上面创建一个水印。我看过this answer。这是目前我最好的方法,但我不想限制自己仅在TextBox没有焦点时显示水印。

我准备尝试任何黑客攻击了!

2 个答案:

答案 0 :(得分:1)

如果我这样做,我会创建一个派生自TextBox的控件,这样你就可以得到所有的基本渲染,事件,文本和选择,yada-yada。我然后P / Invoke到SetWindowLong来改变窗口处理程序,并在自定义处理程序中处理WM_PAINT,绘制水印或任何你想要的东西。

一个很好的基础示例是OpenNETCF.Windows.Forms.TextBox2类,它执行此子类化以处理剪切/复制/粘贴操作。我相信代码自1.x天以来一直存在,所以如果您没有/想要最新的代码可以免费获得(上面链接中的页面底部)。

答案 1 :(得分:0)

不幸的是,.NET CF TextBox不能被继承并用作此任务的基础(OnPaint不会被调用,对于初学者而言),所以我认为你会节省一些时间来创建自己的控件。

如果您还没有在.NET CF中创建自定义控件,我强烈建议您按照此博客文章关于使控件透明,因为概念基本相同:

http://christian-helle.blogspot.com/2008/01/transparent-controls-in-netcf.html

如果我从头开始这样做,我首先从Panel继承并将其变成文本框。文本框可能是最难创建的控件之一(特别是如果文本可能比文本框长),所以您可能还会看到其他供应商是否有一个TextBox组件,其中包含您可以从中开始的源代码,这样您就可以在绘制方法的末尾添加一个.DrawImage,你就有了水印。