2011-11-23 131 views
0

我有一个窗体窗体,我想从命令行的不同选项卡页面上启动。 这是因为表单可以由用户指定的日期/时间 由时间/ cron服务启动。窗体窗体选项卡式页面:从命令行在不同选项卡上启动窗体

如何获取表单应用程序上下文以转到非默认第一个选项卡?

[STAThread] 
    static void Main (string[] args) 
    { 
     Debug.WriteLine("Environment Args= {0}", args.Count()); 
     for (int i=0; i < args.Count(); i++) 
     { 
      Debug.WriteLine(String.Format("{0}:{1}", i, args[i])); 
     } 
     Application.EnableVisualStyles(); 
     Application.SetCompatibleTextRenderingDefault(false); 
     Form myForm = new DailyDirectories(); 
     if (args.Count() > 0) 
     { 
      Application.Run(myForm.???); 
     } 
    } 

回答

0

您可以尝试到参数传递给你的窗体类甚至设置属性

Form myForm = null; 
if (args.Count() > 0) 
{ 
    // in case args[0] contains the start index for your tabControl 
    int tabStartIndex = int.Parse(args[0]); 
    myForm = new DailyDirectories(tabStartIndex);   
    Application.Run(myForm); 
} else // e.g. start form without index 

在您的表单类中,您必须添加/更改源代码。

class DailyDirectories ... 
{ 
    /// add constructor or change default constructor 
    pubic DailyDirectories(int tabStartIndex) 
    { 
     InitializeComponents(); 
     this.tabControl.SelectedIndex = tabStartIndex; 
    } 

} 
+0

尊敬的弗朗茨先生; –

+0

测试过,效果!看起来有点棘手得到一个标签页的索引。它与Tab索引不同,制作可见,主动不是实现它的方式。排序似乎取决于它是如何创建的,而不是现在您想要将选项卡排序给用户。最终,我想重新洗牌标签,使其作为左边第一个标签。感谢您的见解。 –

+0

无需运行或初始化参数。环境在任何地方都可见。我喜欢加载属性。了解事件如何渗透代码意味着你不需要编写太多的代码。 –

0

既然你在谈论的标签,我想你有一个TabControl,那么你为什么不设置标签页,你想在你的窗体的Load()事件?

private void Form_Load(object sender, EventArgs e) 
{ 
    this.tabControl.SelectedIndex = YourIndex; 
} 
相关问题