我有一个名为 MainForm.cs 的窗体和两个用户控件,分别是 UserControlRed.cs 和 UserControlBlue.cs 。创建一个UserControlRed的对象 ucr ,并使用MainForm的默认构造函数中的panel1.Controls.Add(ucr);
将其添加到MainForm的panel1中。
然后我有这样的用户界面:MainForm
注意:使用UserControlRed中的单击按钮事件创建ucb的UserControlBlue实例。代码如下:
private void CreateUCBbtn_Click(object sender, EventArgs e)
{
MainForm f1 = new MainForm();
f1 = (MainForm)this.Parent.Parent;
f1.AddUCBlueIntoPanel2();
}
现在,我想要做的是在用户点击“更改UCB标签”按钮后,UserControlBlue中的标签将相应更改为UserControlRed中文本框中输入的内容。所以,我在这里有两个问题:
另一个注意事项:我仍然是OOP的新手,特别是C#和winforms。也许有人可以建议我一个熟悉的好网站?
答案 0 :(得分:2)
您可以在UserControlBlue中添加一个公共方法(函数),该方法接受字符串作为参数并将其分配给标签的文本。然后,您可以从“更改UCB标签”按钮单击处理程序中调用该方法。
这样做应该是安全的。
答案 1 :(得分:0)
为了single responsibility principle,这就是臭臭的代码。两者的父母应该知道如何填充其面板的逻辑。红色和蓝色面板应该只知道如何在其父级上触发某些操作,但实际的实现存储在父级的逻辑中。
就像现在一样,红色面板实现的逻辑不依赖于红色面板本身。
private void CreateUCBbtn_Click(object sender, EventArgs e)
{
var textBoxContent = this.MyTextBox.Text;
var parent = this.Parent as MainForm;
parent.AddBlueIntoPanel2(textBoxContent);
}