【问题标题】:C# Windows Forms - SendMessage EM_SETCUEBANNER on textbox not workingC# Windows 窗体 - 文本框上的 SendMessage EM_SETCUEBANNER 不起作用
【发布时间】: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");
}

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

我做错了什么?我没有收到任何错误。

【问题讨论】:

  • 对我来说很好,你的 main() 中有一个自动生成的 Application.EnableVisualStyles() ?
  • 哦,这就是问题所在,我没有。我从一个空的 Program.cs 开始,所以我没有那行。谢谢! :)

标签: c# textbox placeholder sendmessage


【解决方案1】:

我很笨,我忘了在我的 Program.cs 中添加 Application.EnableVisualStyles();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-23
    • 2018-10-23
    • 2011-09-18
    • 2018-03-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多