在我目前的项目中,我有6种不同类型的促销活动的多种形式。我目前的UI设计是在运行时弹出一个迷你表单,允许用户选择促销类型并根据选择将它们指向每个表单。
相反,我想使用TreeView
左侧窗格中的Windows Explorer
控件,并将它们分组到一个主根下,这样我就不需要为每种类型的促销创建多个表单。
布局将是这样的:
我的问题是如何管理不同形式的控件?
如果我将所有控件放在一个表单下并在NodeMouseClick
事件上显示/隐藏,我的设计视图将非常混乱。
在tab control
,我可以manage a related set of controls under each tab
。
但我认为对每种类型的促销使用标签控件都不是正确的方法。
非常感谢任何帮助或建议!
答案 0 :(得分:0)
最简单的方法是将您的应用转换为MDI,以便重复使用现有表单。
答案 1 :(得分:0)
如果每个表单上的控件相同但值不同,则可以轻松使用一个表单和一组值列表,您可以将相应集合中的值插入表单中。如果控件不同,请设计可以存储在内存中的不同面板或组框,并根据需要添加到表单中。
答案 2 :(得分:0)
可能的方法是使用用户控件。
这样的事情应该有效
private UCDummy1 ucDummy1;
private void TreeView_Loaded(object sender, RoutedEventArgs e)
{
var item = new TreeViewItem();
item.Header = "Options";
item.ItemsSource = new string[] {"Dummy1", "Dummy2", "Dummy3"};
var tree = sender as TreeView;
tree.Items.Add(item);
PopulateConfigUserControls();
}
private void TreeView_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{
var tree = sender as TreeView;
if (tree.SelectedItem is string)
{
string selectedUC = tree.SelectedItem.ToString();
PanelOption.Children.Clear();
if (selectedUC == "Dummy1")
{
PanelOption.Children.Add(ucDummy1);
}
}
}
private void PopulateConfigUserControls()
{
ucDummy1 = new UCDummy1();
ucDummy1.TextBoxVoornaam.Text = Settings.Default.Voornaam;
ucDummy1.TextBoxAchternaam.Text = Settings.Default.Achternaam;
}
private void ButtonSave_Click(object sender, RoutedEventArgs e)
{
Settings.Default.Voornaam = ucDummy1.TextBoxVoornaam.Text;
Settings.Default.Achternaam = ucDummy1.TextBoxAchternaam.Text;
Settings.Default.Save();
}