【发布时间】:2016-10-19 05:39:50
【问题描述】:
我正在用 C# 编写一个带有 windows 窗体的应用程序。我想为我的文本框设置一个占位符,我从 User32.dll 中找到了 SendMessage 的方法。这是我的代码(如果设置文件不存在,则放在 LoginForm.cs 中,这是第一个表单之一):
private const int EM_SETCUEBANNER = 0x1501;
[DllImport("user32.dll", CharSet = CharSet.Auto)]
private static extern Int32 SendMessage(IntPtr hWnd, int msg, int wParam, [MarshalAs(UnmanagedType.LPWStr)]string lParam);
放在类里面。作为我的构造函数,我得到了:
public LoginForm()
{
InitializeComponent();
SendMessage(hostname.Handle, EM_SETCUEBANNER, 0, "Hostname");
SendMessage(port.Handle, EM_SETCUEBANNER, 0, "Port");
SendMessage(username.Handle, EM_SETCUEBANNER, 0, "Username");
SendMessage(password.Handle, EM_SETCUEBANNER, 0, "Password");
SendMessage(database.Handle, EM_SETCUEBANNER, 0, "Database");
}
我的hostname、port、username、password、database 都是文本框。但是如果我运行我的应用程序,它不会应用占位符,它只会关注最后一个文本框。
我做错了什么?我没有收到任何错误。
【问题讨论】:
-
对我来说很好,你的 main() 中有一个自动生成的 Application.EnableVisualStyles() ?
-
哦,这就是问题所在,我没有。我从一个空的 Program.cs 开始,所以我没有那行。谢谢! :)
标签: c# textbox placeholder sendmessage