C# 无法更改标签文本!

C# 无法更改标签文本!,c#,winforms,label,C#,Winforms,Label,我已经创建了一个自定义控件,并向其添加了一个label属性,以便在设计时可以拾取一个标签并将其指定给该控件。所以基本上我想,如果一个标签被分配给那个控件,它的文本应该改变如下,它的文本也应该改变为粗体字体,下面是代码: private Label assignedLabel; public Label AssignedLabel { get { return assignedLabel; } set { assignedLa

我已经创建了一个自定义控件,并向其添加了一个label属性,以便在设计时可以拾取一个标签并将其指定给该控件。所以基本上我想,如果一个标签被分配给那个控件,它的文本应该改变如下,它的文本也应该改变为粗体字体,下面是代码:

private Label assignedLabel;
public Label AssignedLabel
{
    get
    {
        return assignedLabel;
    }
    set
    {
        assignedLabel = value;
        assignedLabel.Text = @"*" + assignedLabel.Text; 
        assignedLabel.Font = new Font(AssignedLabel.Font, FontStyle.Bold);
        AssignedLabel.Refresh();
    }
}
问题是,根据上面的代码,指定标签的字体正确地更改为粗体字体,但其文本不起作用。
为什么会这样?如何解决此问题?

听起来您真的应该探索数据绑定。这非常适合处理基于其他控件状态更新标签的内部操作

例如,如果您有两个控件,一个文本框(textBox1)和一个标签(label1),则可以在需要绑定它们时调用以下代码行:

label1.DataBindings.Add("Text", textBox1, "Text");

这将label1的“Text”属性绑定到textBox1对象的“Text”属性。你可以在这里使用任何对象。“正确”的方法是创建包含许多变量的当前状态的基础数据源,并将所有控件绑定到该数据源。但是这种类型的代码会让您快速运行。

听起来您真的应该探索数据绑定。这非常适合处理基于其他控件状态更新标签的内部操作

例如,如果您有两个控件,一个文本框(textBox1)和一个标签(label1),则可以在需要绑定它们时调用以下代码行:

label1.DataBindings.Add("Text", textBox1, "Text");

这将label1的“Text”属性绑定到textBox1对象的“Text”属性。你可以在这里使用任何对象。“正确”的方法是创建包含许多变量的当前状态的基础数据源,并将所有控件绑定到该数据源。但是这种类型的代码可以让您快速运行。

除非在控件的InitializeComponent()子例程中设置它,否则我认为您无法做到这一点


实际上,在更改字体之前,字体是否已设置为默认字体?

我认为,除非在控件的InitializeComponent()子例程中设置字体,否则无法执行此操作


实际上,在您更改字体之前,是否已将其设置为默认字体?

Hmmm!代码刚刚开始工作!有一个小问题是每次我运行表单时都会添加“*”,但这应该是一个简单的解决方案。 欢迎使用任何其他实现此目标的好方法:)
谢谢大家。

嗯!代码刚刚开始工作!有一个小问题是每次我运行表单时都会添加“*”,但这应该是一个简单的解决方案。 欢迎使用任何其他实现此目标的好方法:)
谢谢大家。

但是为什么我可以将字体更改为粗体,但不能更改文本?我更新了回复。以编程方式更改字体之前,请确保设置了一些默认字体。字体正常。。。因为我是在AssignedLabel.Font中阅读它的,所以不管它是什么,我只是将其加粗。但是为什么我可以将字体更改为加粗,但不能更改其文本?我更新了我的回复。以编程方式更改字体之前,请确保设置了一些默认字体。字体正常。。。因为我是在AssignedLabel.Font中阅读它的,所以不管它是什么,我只是将它加粗。你是指“*”+AssignedLabel.Text?你是指“*”+AssignedLabel.Text?举了一个简单的例子,如果你需要更多,请告诉我。谢谢,在我的问题中,我正在考虑如何利用这个技巧,但我从这个例子中学到了很多。这是一种很好的方法,只需一行代码即可根据其他控件的更改来更新控件。。很好,我应该进一步研究它,它很强大。在自定义控件中,您可能希望公开一个文本属性,该属性在标签更新时更改。然后,只需将标签绑定到该自定义控件实例的Text属性。没有额外的、凌乱的代码,它正确地封装了所有内容。当前设计强制用户控件维护其可能需要或不需要的标签。被动绑定消除了这样的要求。给出了一个快速示例,如果您需要更多,请告诉我。谢谢,我正在思考如何在我的问题中利用这项技术,但我从这个示例中学到了很多。这是一种很好的方法,只需一行代码即可根据其他控件的更改来更新控件。。很好,我应该进一步研究它,它很强大。在自定义控件中,您可能希望公开一个文本属性,该属性在标签更新时更改。然后,只需将标签绑定到该自定义控件实例的Text属性。没有额外的、凌乱的代码,它正确地封装了所有内容。当前设计强制用户控件维护其可能需要或不需要的标签。被动绑定消除了这种要求。我无法重现您的问题。您确定要在UI线程上执行此代码吗?否则,不可预知的事情可能会发生……我无法重现你的问题。您确定要在UI线程上执行此代码吗?否则,不可预知的事情可能会发生。。。