2013-12-09 102 views
1

在我目前的項目中,我有6種不同類型的促銷活動的多種形式。我目前的UI設計是在運行時彈出一個迷你窗體,允許用戶選擇促銷類型並根據選擇將其指向每個窗體。如何在Windows窗體中創建樹視圖菜單?

相反,我想使用TreeView控件,如Windows Explorer左窗格,並將它們歸入一個主根目錄下,這樣我就不需要爲每種促銷類型創建多個窗體。

佈局將是這樣的:

enter image description here

我的問題是如何管理來自不同形式的控制?

如果我把所有的控件放在一個表格下,並在NodeMouseClick上顯示/隱藏事件,我的設計視圖將非常混亂。我可以manage a related set of controls under each tab

但我認爲對每種促銷使用tab控件並不是正確的方式。

任何幫助或建議將非常感謝!

回答

0

最簡單的方法是將您的應用程序轉換爲MDI,以便您可以重新使用現有表單。

0

如果每個表單上的控件都是相同的但具有不同的值,則可以輕鬆使用一個表單和一個值集合的列表,您可以將相應集合中的值插入到表單中。如果控件不同,則可以設計不同的面板或組框,您可以將其存儲在內存中並根據需要添加到窗體中。

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(); 
    } 
相關問題