C#如何让textBox中显示一些内容,然后鼠标单击进去之后自动清空?

2024-10-31 19:01:57
推荐回答(3个)
回答1:

首先页面布局

 

现在布局完成了   TextBox默认是没有点击事件的  所以要我们自己写一个 所以我们需要在后台代码中添加一个点击事件

这样就可以实现了   本人已测试   可以实现清空功能

回答2:

你在窗体的构造函数里给textbox赋值
textBox1.Text = "么么么么";
然后在vs设计界面点击该textbox,在右下角的属性框那里点击闪电图标,找到里面的MouseClick事件,双击进去。
里面写:
textBox1.Text ="";
运行后点击textbox就执行MouseClick函数的。

回答3:

public class TextBoxUi:TextBox
    {
        private const uint ECM_FIRST = 0x1500;
        private const uint EM_SETCUEBANNER = ECM_FIRST + 1;
        [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)]
        static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, uint wParam, [MarshalAs(UnmanagedType.LPWStr)]string lParam);
        bool hasText = false;
        private string m_tip_text = "提示文字";
        [CategoryAttribute("自定义")]
        [DescriptionAttribute("每条日志前是否显示日期")]
        public string ToolTipText
        {
            set
            {
                m_tip_text = value;
                SendMessage(Handle, EM_SETCUEBANNER, 0, m_tip_text);
            }
            get
            {
                return m_tip_text;
            }
        }
        
        public TextBoxUi()
        {
        }
        protected override void OnEnter(EventArgs e)
        {
            base.OnEnter(e);
            if (!hasText)
                Text = "";
            ForeColor = Color.Black;
        }
        protected override void OnLeave(EventArgs e)
        {
            base.OnLeave(e);
            if(Text == "")
            {
                Text = ToolTipText;
                ForeColor = Color.Gray;
                hasText = false;
            }
            else
            {
                hasText = true;
            }
        }
    }