C#Windows窗体 - 文本框上的SendMessage EM_SETCUEBANNER无法正常工作

时间:2016-06-17 11:37:53

标签: c# textbox placeholder sendmessage

我正在使用Windows窗体在C#中创建应用程序。我想为我的文本框设置一个占位符,我从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");
}

我的hostnameportusernamepassworddatabase都是文字框。但是,如果我运行我的应用程序,它不会应用占位符,它只关注最后一个文本框。

我做错了什么?我没有错。

1 个答案:

答案 0 :(得分:-1)

我愚蠢,我忘了将Application.EnableVisualStyles();添加到我的Program.cs。