Я пытаюсь понять проблемы шаблона дизайна. Я пытаюсь изменить подобный код в winforms и пытаюсь понять, подходит ли какой-либо шаблон проектирования моему требованию. Пожалуйста, предложите, какой шаблон дизайна является лучшим в этом сценарии. Это очень простой код, содержащий 2 вкладки, которые могут иметь разные элементы управления, которые могут быть добавлены динамически и считывать разные файлы по нажатию определенной вкладки. Подробнее ... Я написал этот код, чтобы узнать и понять шаблон проектирования. Это всего лишь сценарий, когда пользователь нажимает на конкретную вкладку, на которой отображаются сгенерированные динамические элементы управления.
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();
}