我创建了一个自定义控件并为其添加了label属性,因此在设计时我们可以选择一个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();
}
}
问题是基于上面的代码,该分配标签的Font正确地更改为Bold字体,但其Text不会生效。 为什么会这样?我该如何解决这个问题?
答案 0 :(得分:1)
除非在控件的InitializeComponent()子例程中设置,否则我认为你不能这样做。
实际上,在更改之前字体是否设置为默认值?
答案 1 :(得分:0)
听起来你应该探索DataBinding。这非常适合处理基于其他控件状态更新标签的内部信息。
例如,如果你有两个控件,一个TextBox(textBox1)和一个Label(label1),你可以在想要绑定它们时调用以下代码行:
label1.DataBindings.Add("Text", textBox1, "Text");
这将label1的“Text”属性绑定到textBox1对象的“Text”属性。你可以在这里使用任何对象。 “正确”的方法是创建一个包含许多变量当前状态的底层数据源,并将所有控件绑定到该数据源。但是这种类型的代码可以让你快速前进。
答案 2 :(得分:0)
嗯!代码刚刚开始工作!每次运行表单时都会添加“*”这是一个小问题,但它应该是一个简单的修复。 欢迎任何其他很好的方法来实现这一目标:) 谢谢大家。