我想知道将标签公开是否是一个好主意,以便其他类可以改变它们并获得它们的价值。这是一个好主意吗?如果不是,那该怎么办呢?
答案 0 :(得分:2)
我不会公开这个标签。
最好添加一个特定于标签显示内容的公共方法,并让它更新标签。
例如,如果您的标签是“系统状态”标签,您可能想要添加(到您的Form / UserControl):
public void SetStatusInformation(string currentStatus)
{
this.statusLabel.Text = currentStatus;
}
这允许您稍后更改此信息的显示方式(如果您想使用其他控件),并简化您的API,因为公共方法对用户来说非常清楚。
答案 1 :(得分:1)
这是一个坏主意。 WinForms留下了许多“什么是X的最佳方式?”问题开放;而你最好的答案是遵循既定的模式和实践(不是WinForms特定的)。
阅读MVP或MVC模式。它们都是高级模式,专注于从业务逻辑中分离出特定于UI的代码。如果没有这个分离,你的应用程序很快就会成为维护的噩梦,应该简单的事情变得更加复杂。
对于您的特定场景,您可能最终得到一个Model(您的业务逻辑),它使用数据绑定在WinForms屏幕上显示它的数据。当UI发生变化时,接收变更的模型将会发生变化,并且该更改将通过数据绑定传播到UI。
答案 2 :(得分:0)
我建议使用setter属性或方法进行换行,因为如果调用者来自另一个,你很可能必须执行添加日志记录或重新调用窗口主线程的操作。我发现在公开允许客户更新任何图形的功能时,总是使用如下代码更容易。
public void SetStart()
{
if (this.InvokeRequired)
{
this.Invoke((MethodInvoker)delegate()
{
this.SetStart();
});
}
else
{
progressBar1.Value = 0;
progressBar1.Visible = true;
}
}