C# Windows 表单 - 文本框上的 SendMessage EM_SETCUEBANNER 不工作
C# Windows Forms - SendMessage EM_SETCUEBANNER on textbox not working
我正在使用 windows 表单在 C# 中制作应用程序。我想为我的文本框设置一个占位符,我从 User32.dll 中找到了 SendMessage 的方法。这是我的代码(放在 LoginForm.cs 中,如果设置文件不存在,这是第一种形式):
私有常量整数 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);
是放在class里面的。作为我的构造函数,我得到了:
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
都是文本框。但是如果我 运行 我的应用程序,它不应用占位符,它只关注最后一个文本框。
我做错了什么?我没有收到任何错误。
我傻了,我的Program.cs忘记加Application.EnableVisualStyles();
了。
我正在使用 windows 表单在 C# 中制作应用程序。我想为我的文本框设置一个占位符,我从 User32.dll 中找到了 SendMessage 的方法。这是我的代码(放在 LoginForm.cs 中,如果设置文件不存在,这是第一种形式):
私有常量整数 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);
是放在class里面的。作为我的构造函数,我得到了:
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
都是文本框。但是如果我 运行 我的应用程序,它不应用占位符,它只关注最后一个文本框。
我做错了什么?我没有收到任何错误。
我傻了,我的Program.cs忘记加Application.EnableVisualStyles();
了。