作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 WinForms 项目中,我知道如何添加 placeholder text到一个普通的文本框。但 ToolStripTextBox 似乎不是常规文本框。其一,它不公开句柄(这是通过 Win API 设置占位符文本所需要的)。
那么,如何在 ToolStripTextBox 上设置占位符文本或获取其 .Handle 属性?
最佳答案
ToolStripTextBox
承载一个 ToolStripTextBoxControl
其中派生自 TextBox
,您可以使用其 TextBox
访问托管控件或其 Control
属性(property)。所以你可以写这样的代码:
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);
}
}
关于c# - 如何将占位符文本添加到 ToolStripTextBox?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50918225/
我是一名优秀的程序员,十分优秀!