2010-08-31 58 views
1

我有一个现有的应用程序(C#/ Win窗体)。我需要为应用程序添加功能,以便可以启动其自己的另一个实例并禁用窗体中的某些控件。使用简单继承来实现它可能非常容易,或者可能是一些if else循环,但是此应用程序必须通知其相关的程序集状态。我正在寻找最优雅的做这件事。我并不热衷于修改当前文件,只是添加到现有功能上。任何建议都会有很大的帮助。多版本的应用程序

+0

什么是你想要完成的高级描述?为什么你需要两个不同的实例? – JoshVarga 2010-08-31 02:26:23

+0

我需要启动应用程序的只读版本。这将禁用窗体上的一些控件。第二个实例将使用第一个菜单启动。 – Dhruv 2010-08-31 02:56:52

回答

1

可以启动另一个实例是这样的:

 System.Diagnostics.Process.Start(
      System.Reflection.Assembly.GetEntryAssembly().Location, 
      "disable"); 

可以在表单构造测试与代码的命令行参数如下:

public Form1() { 
     InitializeComponent(); 
     if (Environment.CommandLine.ToLower() == "disble") { 
      button1.Enabled = false; 
      // etc.. 
     } 
    } 

要调试这一点,你必须使用项目+属性,调试选项卡,取消选中“启用Visual Studio托管过程”。

+0

谢谢。合理接近我的要求。但这是最优雅的方式吗?由于控制的禁用必须在很多形式和引用程序集中完成。 – Dhruv 2010-09-01 03:44:36

+0

好吧,让它成为一个静态属性。我相信你可以根据自己的喜好将它打成形状。 – 2010-09-01 03:46:18