我想了解设计模式问题。我试图在winforms中修改这样的代码,并尝试查看是否有任何设计模式适合我的要求。请在这种情况下建议哪个是最好的设计模式。这是包含2个标签页的非常基本的代码,可能会有不同的控件可以动态添加,并在特定标签的点击时读出不同的文件。详细说明...我已经编写了这些代码来学习和理解设计模式。这只是一个场景,用户点击特定的选项卡将显示生成的动态控件。.net设计模式问题
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
{
if (tabControl1.SelectedTab.Name.Equals("tabPage1"))
{
GeneratedynamicControlsForTab1();
}
else if (tabControl1.SelectedTab.Name.Equals("tabPage2"))
{
GeneratedynamicControlsForTab2();
}
}
private void GeneratedynamicControlsForTab1()
{
Label label1 = new Label();
label1.Text = "Label1";
tabPage1.Controls.Add(label1);
}
private void GeneratedynamicControlsForTab2()
{
tabPage1.Controls.Clear();
Label label2 = new Label();
label2.Text = "Label2";
tabPage2.Controls.Add(label2);
}
}
请让我知道这下面的实施是正确的上述方案 请让我知道这个实现是正确修改上面的代码状态模式。
public partial class Form1 : Form
{
void GenerateControl(iState state)
{
switch (state.value)
{
case 1:
GenerateControlforTab1();
break;
case 2:
GenerateControlforTab2();
break;
}
}
void GenerateControlforTab1()
{
}
void GenerateControlforTab2()
{
}
private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
{
IState state = new State()
if (tabControl1.SelectedTab.Name.Equals("tabPage1"))
{
state.value =1 ; }
else if (tabControl1.SelectedTab.Name.Equals("tabPage2"))
{
state.value =2;
}
this.GenerateControls();
}
}
interface iState {
void GenerateControls();
}
什么是你的“要求”,你为什么这样做:动态地创建控件。你有没有注意到你总是清除tabPage1 – OlimilOops 2010-06-04 11:44:21
嗨,我已经纠正了代码。要求是在特定标签的点击上,应该根据从数据库中提取的某些条件来添加动作控件。目前,我只专注于设计,所以没有从数据库进行任何调用。 – user359562 2010-06-06 06:36:04