Material Skin WinForms中Raised-Button文本自动大写问题求助
嘿,我之前也被Material Skin的这个默认行为坑过!它的Raised Button遵循Material Design规范,默认会把所有按钮文本转成大写,不过咱们有办法改掉这个设定,给你两种靠谱的解决方案:
方法一:自定义按钮控件(推荐,稳定不依赖内部实现)
创建一个继承自MaterialRaisedButton的自定义控件,重写它获取渲染文本的方法,让它返回咱们设置的原始文本:
using MaterialSkin.Controls; public class CustomNonUppercaseRaisedButton : MaterialRaisedButton { // 重写获取渲染文本的方法,跳过默认的大写转换 protected override string GetRenderText() { return Text; // 直接返回原始文本,不做大写转换 } }
之后你只需要在窗体里使用这个CustomNonUppercaseRaisedButton代替原来的MaterialRaisedButton,设置的文本就会保持你想要的大小写啦。
方法二:用反射修改内部属性(临时应急用,版本更新可能失效)
如果你不想新建自定义控件,可以通过反射修改Material Skin按钮内部的私有字段,关闭强制大写的功能:
using System.Reflection; // 在窗体的Load事件或者按钮初始化时执行这段代码 private void Form1_Load(object sender, EventArgs e) { // 替换成你的按钮实例名称 var targetButton = materialRaisedButton1; // 获取MaterialButtonBase基类里的forceUpperCase私有字段 var forceUpperCaseField = typeof(MaterialButtonBase).GetField( "forceUpperCase", BindingFlags.NonPublic | BindingFlags.Instance ); if (forceUpperCaseField != null) { // 将字段值设为false,关闭强制大写 forceUpperCaseField.SetValue(targetButton, false); // 刷新按钮让修改生效 targetButton.Refresh(); } }
这种方法要注意,一旦Material Skin组件更新,内部字段名称或者实现逻辑变了,这段代码可能就失效了,所以还是第一种自定义控件的方法更稳妥。
内容的提问来源于stack exchange,提问作者Johnson Kumar
相关产品推荐
相关产品推荐

