这是我的应用程序的概述:
这基本上是一本烹饪书。用户可以创建一个食谱,然后在该食谱中创建食谱。我有一个Cookbook类和一个Recipe类。 CookBook跟踪与食谱相关的食谱,Recipe跟踪食谱的内容。
对于用户界面,我有一个树形视图,其中将显示CookBook中的食谱。我有一个TabControl,它将显示与每个配方关联的选项卡。这些选项卡由用户在运行时动态创建。
当用户单击配方之一时,我希望TabControl显示与该特定配方相关的选项卡。当用户单击其他配方时,我希望先前选择的选项卡消失而当前选择的选项卡显示。 (旁注:我将稍后将标签和内容的内容保存到文件中,以用于保存)
我希望Recipe类包含有关TabControl的详细信息(配方中有多少个选项卡,每个选项卡的标题,选项卡的内容)。但是我不希望Recipe负责创建Tabs或TabControl。
我的问题是,我如何完成上面的粗体部分?人们对这类问题有何看法和经验?这类问题的最佳做法是什么?
谢谢!
最佳答案
我希望以下代码能给您一个思路
public Form1()
{
InitializeComponent();
Recipe r1 = new Recipe() { Text = "Re1" };
Recipe r2 = new Recipe() { Text = "Re2" };
Recipe r3 = new Recipe() { Text = "Re3" };
listBox1.Items.Add(r1);
listBox1.Items.Add(r2);
listBox1.Items.Add(r3);
tabControl1.TabPages.Add(new AdvancedTabPage() { Recipe = r1,Text=r1.ToString() });
tabControl1.TabPages.Add(new AdvancedTabPage() { Recipe = r2, Text = r2.ToString() });
tabControl1.TabPages.Add(new AdvancedTabPage() { Recipe = r3, Text = r3.ToString() });
listBox1.SelectedIndexChanged += new EventHandler(listBox1_SelectedIndexChanged);
}
void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if (listBox1.SelectedItem != null)
foreach (AdvancedTabPage ad in tabControl1.TabPages)
{
if (ad.Recipe == listBox1.SelectedItem)
{
tabControl1.SelectedTab = ad;
break;
}
}
}
public class AdvancedTabPage : System.Windows.Forms.TabPage
{
public Recipe Recipe{get;set;}
}
public class Recipe
{
public string Text = "";
public override string ToString()
{
return Text;
}
}
关于c# - 用户单击Treeview节点时,tabcontrol发生更改,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6795666/