如何以C#窗口形式隐藏字符串或标签文本的一部分

如何以C#窗口形式隐藏字符串或标签文本的一部分,c#,C#,我想隐藏Label1文本的“我的”,但当分配给varTest时,我想显示完整的文本,意思是“我的文本”实际上这个问题还没有真正得到回答,因为没有人提出一个解决方案,其中隐藏了标签的一部分。然而,这(当然)是可能的。您只需派生WinForms标签并更改其绘制方式: Public Void Show() { label1.Text="My Text"; string varTest=Label1.Text; MessageBox.Show(varText); } 现在使用SpecialLabel代

我想隐藏Label1文本的“我的”,但当分配给varTest时,我想显示完整的文本,意思是“我的文本”

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

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

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

标签显示您分配给它的所有文本。这就是标签的工作原理。Alex K我想在表单加载时显示部分标签文本,而不是显示完整的标签文本Peter B我知道如何使用标签,但我有一种情况,标签文本是根据规则显示的,这意味着当用户有权显示完整的标签文本或not@kamranafridi,要显示依赖于用户权限的文本,您可以使用
if
语句来选择所需的文本,但不能显示部分文本。谢谢大家我解决了我的问题谢谢你们这么多元代码我正在从头开始学习dotnet,这就是为什么事情对我来说很困难的原因。如果你的答案已经解决了你的问题,请通过点击复选标记来考虑。这向更广泛的社区表明,你已经找到了一个解决方案,并给回答者和你自己带来了一些声誉。没有义务这样做。
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);
    }
}