winforms 如何将占位符文本添加到ToolStripTextBox?

l3zydbqr  于 2022-11-17  发布在  其他
关注(0)|答案(3)|浏览(165)

在WinForms项目中,我知道如何将placeholder text添加到常规文本框中。但是ToolStripTextBox看起来并不是常规文本框。首先,它没有公开句柄(通过Win API设置占位符文本需要句柄)。
那么,如何在ToolStripTextBox上设置占位符文本或获取其.Handle属性呢?

qxsslcnc

qxsslcnc1#

ToolStripTextBox承载了一个ToolStripTextBoxControl,它在其中派生自TextBox,您可以使用其TextBoxControl属性访问承载的控件。因此,您可以编写以下代码:

using System;
using System.Drawing;
using System.Runtime.InteropServices;
using System.Windows.Forms;

[ToolboxBitmap(typeof(ToolStripTextBox))]
public class MyToolStripTextBox : ToolStripTextBox
{
    private const int EM_SETCUEBANNER = 0x1501;
    [DllImport("user32.dll", CharSet = CharSet.Auto)]
    private static extern Int32 SendMessage(IntPtr hWnd, int msg,
        int wParam, string lParam);
    public MyToolStripTextBox()
    {
        this.Control.HandleCreated += Control_HandleCreated;
    }
    private void Control_HandleCreated(object sender, EventArgs e)
    {
        if (!string.IsNullOrEmpty(cueBanner))
            UpdateCueBanner();
    }
    string cueBanner;
    public string CueBanner
    {
        get { return cueBanner; }
        set
        {
            cueBanner = value;
            UpdateCueBanner();
        }
    }
    private void UpdateCueBanner()
    {
        SendMessage(this.Control.Handle, EM_SETCUEBANNER, 0, cueBanner);
    }
}
k3bvogb1

k3bvogb12#

我自己都没有试过。
但是Remarks部分指示您可以直接操作TextBox控件。
ToolStripTextBox是为在ToolStrip中承载而优化的文本框。所承载控件的属性和事件的子集在ToolStripTextBox级别公开,但基础TextBox控件可通过TextBox属性完全访问

8cdiaqws

8cdiaqws3#

回答你的问题
那么,如何设置ToolStripTextBox上得占位符文本
您可以应用以下代码:

tspTextBox.TextBox.PasswordChar = Convert.ToChar("*");

相关问题