【问题标题】:Drawing over a TextBox in .NET Compact Framework在 .NET Compact Framework 中绘制文本框
【发布时间】:2010-10-06 04:53:26
【问题描述】:

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

我已经准备好尝试任何技巧了!

【问题讨论】:

    标签: .net compact-framework


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      如果您还没有在 .NET CF 中创建自定义控件,我强烈建议您阅读这篇关于使控件透明的博文,因为概念大致相同:

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

      如果我是从头开始做这件事,我会先从 Panel 继承,然后把它变成一个文本框。文本框可能是最难创建的控件之一(尤其是如果文本可能比文本框长),因此您可能还会查看其他供应商是否有带有源代码的 TextBox 组件,您可以从该组件开始,这样您就可以将 .DrawImage 添加到paint方法的末尾,您将拥有水印。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-09
        • 2010-10-07
        • 1970-01-01
        • 1970-01-01
        • 2010-12-26
        • 2011-01-03
        相关资源
        最近更新 更多