首页新闻找找看学习计划

c# winform中如何用代码动态设置button的Text显示/隐藏下划线。

0
悬赏园豆:10 [已解决问题] 解决于 2013-11-11 11:30

最近在做winform,以为这个很简单,但网上一查,没查到,都是说web或其它控件,或者初始化时静态设置。

我需要用代码动态切换。

button1.Font.Underline = true;这句报错,编译不过去,此值是只读的。

空明流光的主页 空明流光 | 初学一级 | 园豆:48
提问于:2013-11-11 10:54
< >
分享
最佳答案
0

方法很简单! 首先给你讲解下遇到"类似问题"的思路:

1、右键button属性。找到他的Font属性,点击属性内容中的按钮。可以看到弹出设置当前button文本的设置界面。选择其中的下划线,然后确定。

2、打开winform的设计界面 xxx.Designer.cs 文件,在InitializeComponent()初始化界面的方法中找到你需要设置下划线的Button代码。 突然恍然大悟。哦 ,原来代码就在这里:

 this.button1.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Underline, System.Drawing.GraphicsUnit.Point, ((byte)(134))); ----具体参数可以自己设置。

收获园豆:10
何以解忧唯有撸码 | 菜鸟二级 |园豆:368 | 2013-11-11 11:17

我想知道有没有简单的办法,可以不用设置其它属性的。

空明流光 | 园豆:48 (初学一级) | 2013-11-11 11:19

@沧海一杰: 要想用简单方法你需要了解控件是怎么生成的! 大多控件如果需要满足自己的需求,都是需要自己重写的。 微软提供的控件是为了满足大众的需求。所以微软提供了GDI+等等重绘控件的类库。你可以自己了解下。 比如上面我回答的结果this.button1.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Underline, System.Drawing.GraphicsUnit.Point, ((byte)(134))); 这个就是重绘。调用系统的Drawing。 你可以参考下我前段时间写的两篇重写控件的文章。http://www.cnblogs.com/axing/

何以解忧唯有撸码 | 园豆:368 (菜鸟二级) | 2013-11-11 11:22

我现在写的是自定义控件继承自Button控件,我自定义了一些样式,鼠标放上去下划线,移开没有下划线。我想实现控件自动具有这样的功能,因为界面上有超过10个这样的控件,难道这个功能不能集成到我的控件内部简化吗?

空明流光 | 园豆:48 (初学一级) | 2013-11-11 11:23

@沧海一杰: 就只为了动态切换字体下划线重绘,这样有点太远了吧。我觉得微软应该提供了这个功能,因为VB6和Delphi等其它软件都有这个功能。

空明流光 | 园豆:48 (初学一级) | 2013-11-11 11:25

@康忠鑫-Stephen: 网上已经找到解决办法了,不需要重绘。
this.Font = new Font(this.Font, FontStyle.Underline);

this.Font = new Font(this.Font, FontStyle.Regular);

空明流光 | 园豆:48 (初学一级) | 2013-11-11 11:30

@沧海一杰: - -! 为什么不能集成进去呢? 你既然继承了Button控件,你可以调用Button的MouseLeave和MouseMove等等事件啊。 你可以在事件中调用this.button1.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Underline, System.Drawing.GraphicsUnit.Point, ((byte)(134)));

或者

this.button1.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));

不就行了?

何以解忧唯有撸码 | 园豆:368 (菜鸟二级) | 2013-11-11 11:30

@康忠鑫-Stephen: 

这种方法那我在引用的地方想改字体或字号或其它属性,那不就扯了

空明流光 | 园豆:48 (初学一级) | 2013-11-11 11:31
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册