You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Material Skin WinForms中Raised-Button文本自动大写问题求助

解决WinForms Material Skin 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:33:49