visual C# winForm中如何设置textbox只显示一条下划线,并且背景透明?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了visual C# winForm中如何设置textbox只显示一条下划线,并且背景透明?相关的知识,希望对你有一定的参考价值。

visual C# winForm中如何设置textbox只显示一条下划线,并且背景透明?
比如这样显示: ____________

怎么样才能实现呢?
请各位大侠指教一下 !!谢谢!!

没有这样的方法的,不过针对楼主的想法,我提供一个猥琐流的设计。
拖放一个textbox,设置其BorderStyle属性为None。
再拖一个label控件,Text属性设置为“______”,对准位置在textbox控件的下侧···
预计运行效果可实现楼主所想。追问

网上查到的是重绘TEXTBOX,但是都查不到具体方法.

追答

那个方法要应该比较复杂了,要调用graphics类的相关方法了。
如果这个方法可行,楼主可尝试着把这对组合好的textbox和label做成自定义控件,方便重复使用。

追问

你说的textbox设置其BorderStyle属性为None,

虽然没有边框了,但是不是透明的啊!!

自定义控件的话要怎么弄呢?

追答

这个方法很“猥琐”,稍微变通一下,改动TextBox的BackColor就好。
我试过了,比如窗口的BackColor为Contorl,那么设置TextBox的BorderStyle为None、BackColor为Control,然后再拖一个Label控件,Text属性设置为“______”,对准位置在Textbox控件的下侧···这样是可以达到你说的要求的。
至于自定义控件,如果按照上述方法的话,可复用性就没有意义了,因为TextBox的BackColor的缘故,只要设置了一个颜色,换一个背景的窗体下使用该自定义控件则效果就不佳···所以,楼主还是斟酌一下。
至于自定义控件的用法,右击项目文件夹,找到“添加”,选择“新建项”,在选项中选中“自定义控件”,取个名字,确定。然后在该页面中把刚才的TextBox和Label自行拖放。

追问

如果窗口有背景图片呢...

追答

那没办法了,因为TextBox控件的背景颜色是没法设置透明的···
建议你找找第三方控件吧。

参考技术A 直接用一个lable来做,设置AutoSize = false, text = "",再设置背景色,高度和宽度 参考技术B 你试试这样行不行,将他的BorderThickness设置成0,0,0,1。比如 TextBox txt=new TextBox(); txt.BorderThickness= new Thickness(0, 0, 0, 1); 在WPF中是可以的,在WinForm中没有用过,应该可以吧,希望能帮到你~追问

不行的.

错误 1 “System.Windows.Forms.TextBox”不包含采用“4”个参数的构造函数 C:\workspace\C#\mytextbox\mytextbox\Form1.Designer.cs 31 29 mytextbox

如何在winform c#中禁用按钮时将焦点设置在按钮上?

【中文标题】如何在winform c#中禁用按钮时将焦点设置在按钮上?【英文标题】:How to set focus on button while button is disabled in winform c#? 【发布时间】:2021-05-21 20:36:02 【问题描述】:

我想在 Windows 窗体应用程序中禁用按钮时在按钮中设置焦点。

有没有办法实现这个目标?

背景:

我正在制作一个可供盲人使用的应用程序,因此当按钮启用时,屏幕阅读器将读取按钮内容,但当按钮被禁用时,屏幕阅读器将无法读取按钮内容无法专注于禁用模式

【问题讨论】:

禁用控件的全部意义在于防止它获得焦点。这是基本特征。 "我想为可访问性创建一个类似只读的按钮" 我觉得这很令人困惑。你能详细说明一下吗? @VijayMandanka 你能尝试解绑和绑定点击事件而不是让它禁用吗,对你有帮助吗? @MongZhu 我正在制作一个可供盲人使用的应用程序,因此当启用按钮时,焦点屏幕阅读器将读取按钮内容,但当禁用按钮时则无法读取通过屏幕阅读器,因为按钮无法专注于禁用模式。 为什么不添加此附加信息:在您取消挂钩事件时将“禁用”添加到按钮的文本中。这样,读者甚至可以将这些信息提供给用户 【参考方案1】:

您可以尝试通过下面的代码添加和删除点击事件,而不是在C#中启用和禁用按钮。

用于移除点击事件

button.Click -= button_Click;

用于添加点击事件

button.Click += button_Click;

供参考,您可以参考以下链接。

How to subscribe to and unsubscribe from events (C# Programming Guide)

【讨论】:

【参考方案2】:

您可以创建自定义控件并在自定义控件中创建一个属性。使用该属性来检查 OnClick 是否需要触发。

例如:

   public class buttonReadonly: Button
   
       private bool _isReadOnly = false;

       public bool isReadOnly
       
           get
           
               return _isReadOnly;
           
           set
           
               _isReadOnly = value;
           
       

       protected override void OnClick(EventArgs e)
       
           if (!isReadOnly)
           
               base.OnClick(e);
           
       
       
   

【讨论】:

以上是关于visual C# winForm中如何设置textbox只显示一条下划线,并且背景透明?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Visual Studio C# Winform 中打开 Access 表单?

C# winform 中如何实现visual studio 中软件编辑界面的工具箱的隐藏出现效果?? 恳请高手回答

Visual Studio 2010 C#,winform,如何将dataGridview的数据导出到Excel表中?

在 Visual Studio 2012 中发布 C# winform 应用程序

Visual Studio c# winform打开链接[重复]

删除代码时有啥方法不会出现设计器错误? (C#、Visual Studio、WinForms)