如何在C#Winforms程序的文本框中突出显示文本?

如何在C#Winforms程序的文本框中突出显示文本?,第1张

概述我有一个带有多个文本框的C# Winforms程序.我使用每个框的属性在其中放置文本,向用户解释其中的值.每当用户选择该框时,我希望文本突出显示.通过Tab键或鼠标单击.如果有一种方法可以显示文本框中除了它之外的某个值,我就不必这样做了. 我尝试了Textbox.select方法,但没有效果.与this相同. 这是我的计划的Screenshot. 我的代码: private void grappl 我有一个带有多个文本框的C# Winforms程序.我使用每个框的属性在其中放置文本,向用户解释其中的值.每当用户选择该框时,我希望文本突出显示.通过Tab键或鼠标单击.如果有一种方法可以显示文本框中除了它之外的某个值,我就不必这样做了.

我尝试了TextBox.select方法,但没有效果.与this相同.

这是我的计划的Screenshot.

我的代码:

private voID grapplingText1_MaskinputRejected(object sender,MaskinputRejectedEventArgs e)    {        grapplingText1.SelectionStart = 0;        grapplingText1.SelectionLength = grapplingText1.Text.Length;

这样做,还是更需要?

解决方法 你怎么样将tooltip分配给TextBox并将所有“对话是什么文本框”放在那里?

只需拖动和放大在Form中删除tooltip.然后在每个TextBox属性中,你应该在tooltip1上的Misc部分tooltip中有额外的条目(或者如果你重命名它的名字将是什么).

然后,当用户将鼠标悬停在TextBox上时(Read Only / Disabled TextBox似乎不显示工具提示)并在那里停留1秒钟,tooltip应显示正确的信息.

你最终甚至可以更好地在TextBox旁边有一个标签说明是什么,但是使用工具提示也是一个好主意,通过它向用户解释更多信息.

对于使用WaterMark做的事情,所以你不必通过设置事件,照顾SelectAll等来做很长的事情,你可以这样做.创建新的watermark.cs文件并将其替换为此代码.确保已更改名称空间以匹配程序命名空间.

#regionusing System;using System.Runtime.InteropServices;using System.windows.Forms;#endregionnamespace Watermark {    public static class TextBoxWatermarkExtensionMethod {        private const uint ECM_FirsT = 0x1500;        private const uint EM_SETCUEBANNER = ECM_FirsT + 1;        [Dllimport("user32.dll",CharSet = CharSet.auto,SetLastError = false)] private static extern IntPtr SendMessage(IntPtr hWnd,uint Msg,uint wParam,[MarshalAs(UnmanagedType.LPWStr)] string lParam);        public static voID SetWatermark(this TextBox textBox,string watermarkText) {            SendMessage(textBox.Handle,EM_SETCUEBANNER,watermarkText);        }    }}   internal class WatermarkTextBox : TextBox {    private const uint ECM_FirsT = 0x1500;    private const uint EM_SETCUEBANNER = ECM_FirsT + 1;    private string watermarkText;    public string WatermarkText {        get { return watermarkText; }        set {            watermarkText = value;            SetWatermark(watermarkText);        }    }    [Dllimport("user32.dll",[MarshalAs(UnmanagedType.LPWStr)] string lParam);    private voID SetWatermark(string watermarkText) {        SendMessage(Handle,watermarkText);    }}

在您的表单中,您可以像这样激活它:

textBoxYourWhatever.SetWatermark("Text that should display");

只要TextBox为空,它就会一直存在.当用户进入TextBox文本消失时.当清除TextBox(由用户或自动)时,它会再次出现.不需要任何特殊活动等

编辑:

我还添加了内部类WaterMarkTextBox,它为您提供了一个选项,可以简单地使用Designer中可用的新WaterMarkTexBox.然后将其拖放到您的设计器并使用它.它的行为与普通文本框一样,只为您提供了额外的字段WaterMarkText.

我还是喜欢第一种方法.不会让你再次重建你的gui.

总结

以上是内存溢出为你收集整理的如何在C#Winforms程序的文本框中突出显示文本?全部内容,希望文章能够帮你解决如何在C#Winforms程序的文本框中突出显示文本?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1237015.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存