如何在 C# 窗口窗体中隐藏字符串或标签文本的一部分


Public Void Show()
{
label1.Text="My Text";
string varTest=Label1.Text;
MessageBox.Show(varText);
}

我想隐藏 Label1 文本的"我的",但是当分配给 varTest 时,我想显示完整的文本表示"我的文本">

实际上这个问题还没有真正得到回答,因为没有人提出一个解决方案,其中标签的一部分被隐藏了。但是,这(当然(是可能的。您只需派生 WinForms 标签并更改其绘制方式:

public class SpecialLabel : Label
{
    protected override void OnPaint(PaintEventArgs e)
    {
        base.OnPaint(e);
        if (!Text.StartsWith("My "))
            return;
        var stringFormat = new StringFormat(StringFormat.GenericDefault);
        stringFormat.SetMeasurableCharacterRanges(new []{new CharacterRange(0, 3)});
        var bounds = Rectangle.Round(e.Graphics.MeasureCharacterRanges("My ",
                Font, e.ClipRectangle, stringFormat)[0]
            .GetBounds(e.Graphics));
        e.Graphics.FillRectangle(new SolidBrush(BackColor), bounds);
    }
}

现在使用SpecialLabel而不是您的标签,并且每次标签中的文本以"我的"开头时,都不会打印此部分。当然,您仍然可以修改此行为。

最新更新