首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从DataGridViewTextBoxCell获取句柄IntPtr?

从DataGridViewTextBoxCell获取句柄IntPtr?
EN

Stack Overflow用户
提问于 2010-07-04 12:23:24
回答 1查看 959关注 0票数 1

我有一个包含一列文本框单元格的DataGridView,它需要有水印文本。我还有一个静态类,它使用DLLImport将水印添加到TextBox,使用SendMessage并将IntPtr hWnd作为参数之一,如下所示:

代码语言:javascript
复制
public static void SetWatermark(TextBox textBox, string watermarkText)
    {
        SendMessage(textBox.Handle, EM_SETCUEBANNER, 0, watermarkText);
    }

问题是,虽然TextBox继承了Control.Handle属性,但DataGridViewTextBoxCell没有,所以我无法获取IntPtr参数。据我所知,该单元格使用TextBox控件来编辑值,所以不是应该有某种方法来访问该句柄吗?

我使用的是.NET 2.0和C#

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-07-04 22:14:44

如果要引用当前正在编辑的单元格的TextBox,可以使用DataGridView本身的DataGridView.EditingControl属性。将代码放在EditingControlShowing事件的处理程序中,以便每当显示新的TextBox时都会调用它。

当然,您实际上希望在未被编辑的单元格上添加水印,因为正在编辑的单元格具有键盘焦点,所以水印无论如何都会被隐藏。未被编辑的单元格没有窗口句柄,并且完全是在托管代码中绘制的,因此不能使用SendMessage执行此操作。您将需要创建DataGridViewCell的子类并覆盖Paint或处理DataGridView上的CellPainting事件。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3173712

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档