以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  控件水印相关  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=164223)

--  作者:cd_tdh
--  发布时间:2021/4/30 10:19:00
--  控件水印相关

老师,之前水印,一直用的班长的方法,刚刚群里面的方法是:

e.Form.Controls("项目名称").BaseControl.DisplayFormat.NullText="请输入项目名称"

但是需要每个窗口都去设置,有点不方便

有没办法通过全局变量来定义,比如所有窗口中,控件名称为:项目名称 ,水印提示都为:请输入项目名称


--  作者:有点蓝
--  发布时间:2021/4/30 10:32:00
--  
我反馈一下
--  作者:有点蓝
--  发布时间:2021/4/30 11:01:00
--  
这种用法不是属于水印,是控件空值的时候设置一个显示文本,这个会影响控件text属性,也就是使用e.Form.Controls("项目名称").text会取到设置的内容"请输入项目名称",而不是空的,这个使用的时候需要注意
--  作者:cd_tdh
--  发布时间:2021/4/30 11:08:00
--  

用班长的这个方法有没办法在全局变量里面定义所有名称为“项目名称”的控件,都显示水印呢?

 

全局代码如下:

Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As IntPtr, ByVal wMsg As Integer, ByVal wParam As IntPtr, ByVal lParam As Byte()) As Integer
Public Const EM_SETCUEBANNER As Integer = &H1501

Public Sub SetWatermark(wTextBox As winform.textbox,str As String)
SendMessage(wTextBox.BaseControl.Handle, EM_SETCUEBANNER, IntPtr.Zero, System.Text.Encoding.Unicode.GetBytes(str))
End Sub

 

窗口加载后代码如下:

SetWatermark(e.Form.Controls("项目名称"),"请输入项目名称")


--  作者:有点蓝
--  发布时间:2021/4/30 11:30:00
--  
没有的。窗口不打开,控件就不存在,所以只能在窗口加载里设置