2010-06-18 69 views
1

我已经创建了一个自定义控件并为其添加了一个标签属性,因此在设计时我们可以选择一个标签并将其分配给该控件。所以基本上我想,如果一个标签被分配到控制,其文本应该如下改变,也是其文本应更改为粗体字,所以这里是代码:无法更改标签文本!

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(); 
    } 
} 

问题,基于该分配的标签的字体上方的代码正确更改为粗体字体,但其文本不会生效。 这是为什么发生?我该如何解决这个问题?

+1

我无法重现您的问题。你确定你在UI线程上执行这段代码吗?如果不是,不可预知的事情可能会发生... – 2010-06-18 15:38:14

回答

0

这听起来好像你应该探索DataBinding。这对于处理基于其他控件状态的内部更新标签来说非常完美。

举例来说,如果你有两个控件,一个文本框(textBox1中)和标签(label1的),你可以把下面的代码行,只要你想将它们绑定:

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

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

+0

谢谢,更多的解释请:) :) – Bohn 2010-06-18 15:12:26

+1

给了一个快速的例子,让我知道如果你需要更多。 – drharris 2010-06-18 15:22:25

+0

谢谢,我正在考虑如何利用这个技术来解决我的问题,但我从这个例子中学到了很多东西。它是一种基于其他控件的更改而仅仅用一行代码更新控件的好方法..不错,我应该学习更紧密的它,它是强大的。 – Bohn 2010-06-18 15:26:51

1

我不认为你可以这样做,除非它在控件的InitializeComponent()子例程中设置。

其实,在你改变它之前,字体是否被设置为默认值?

+0

但为什么我可以将字体更改为粗体,但不能更改其文本? – Bohn 2010-06-18 15:14:23

+1

我更新了我的回复。确保您在编程前更改默认字体。 – 2010-06-18 15:19:02

+0

字体是好的...因为我在AssignedLabel.Font中阅读它,然后不管它是什么,我只是把它做成粗体 – Bohn 2010-06-18 15:22:10

0

嗯!代码刚开始工作!每次运行表单时都会添加“*”,但这应该是一个简单的修复。 欢迎任何其他不错的方式来完成这个目标:) 谢谢大家。

+1

你的意思是“*”+ assignedLabel.Text? – 2010-06-18 15:21:54

+0

是...正确。 – Bohn 2010-06-18 15:27:33