繁体   English   中英

如何使用C#中预先存在的Windows窗体在选项卡控件中动态创建选项卡页

[英]How to dynamically create Tab Pages in a Tab Control with a pre-existing Windows Form in C#

顾名思义,我正在寻找在Tab控件内动态创建Tab页面的方法。 我刚刚开始学习C#,而我正在制作的应用程序(如下所示)是一个通用的股票价格应用程序,与单个用户输入一样,它的运行情况也很好。 我想将其扩展为接受多个输入(amzn-> amzn,msft,mchp)。

到目前为止,它可以处理多个用户输入,但是您可能会猜测,如果不使用Tab控件,它将以超快的速度覆盖它们,并以数组中的最后一个字符串结尾。

我希望能够有多个用户输入来动态创建新的标签页,这些标签页包含与基本表单相同的所有内容,但是每个标签页具有不同的输入参数(每个股票代号)。 目前,我可以用正确的名称创建新的选项卡页面,而不会出现任何问题,它只是用内容填充了选项卡。 我可以将其打印到单个选项卡,但不能将其打印到所有选项卡。

基本应用程序表单的图像(无标签实现):

基本应用程序的图像

我最大的担心是,我必须进行重写以使其与动态创建的选项卡兼容,但是从我进行的所有谷歌搜索中,我还没有遇到能达到此目标的解决方案(即,动态填充包含预先存在的表格内容)

我试过将表单内容构建包装在:

private void btnSubmit_Cick(object sender, EventArgs e)
{
     string userInput = txtUserInput.Text;
     char[] delimiters = { ',', '+', ' ', '-', '_', '.' };
     string[] requests = userInput.Split(delimiters);
     foreach(string str in requests)
     {
          string requestString = str;
          var page = new TabPage(str);
            //Add content to page (i.e. page.Controls.Add(_____))
            //by cloning the base form's controls
            //then finally add the page to the tab control
          tabControl1.TabPages.Add(page);
          page.Select();
     }
}

尽管此方法似乎只填充最后创建的选项卡,但由于某种原因,它会擦除​​所有其他先前的选项卡。

任何帮助是极大的赞赏!

一个简单的解决方案是将现有应用程序中的内容包装到自定义TabPage或其他UserControl ,然后将其创建/添加到TabControl 提供属性以在自定义控件上设置适当的数据:

public class StockDataPanel : TabPage
{
  // have Labels, RichTextBoxes, etc to display the data you need


  public string StockSymbol
  {
    set => _stockSymbolLabel.Text = value;
  }

  // etc for other data you need to give to the control to display
}

在按钮的click事件处理程序中,创建此新控件的实例,并适当地填充数据:

private void Button_Click(s, e)
{
  foreach (string stock in stocks)
  {
    StockDataPanel panel = new StockDataPanel();
    panel.StockSymbol = "AMZN";
    panel.CurrentPrice = 387.98m;
    _tabControl.TabPages.Add(panel);
  }
}

通过将其包装在自己的控件中,这使您可以重用大部分已完成的工作。 如果要一起设置某些属性(例如,高,低,当前价格),请提供一种采用所有3个参数的方法。 您可以在全部设置了3个之后更新一次小图。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM