【发布时间】:2013-07-31 18:43:25
【问题描述】:
我在同一个解决方案中有两个 Windows 窗体应用程序项目(一个测试和一个产品)和一个 dll 项目。这两个 winforms 应用程序项目只有一个类/函数 Program.Main()、我要询问的图标和 app.config 文件。它们都引用了包含其他所有内容(包括表单)的相同 dll。
我想要的是能够在每次显示应用程序中的新表单时设置图标(Form.Icon)和文本(Form.Text)。这样做的目的是为测试和产品提供不同的窗口标题和图标(以及不同的发布位置设置)。我怎样才能做到这一点?我尝试使用属性>应用程序>资源>图标和清单设置图标,但它不起作用。我会很高兴得到一个不同的图标,但文字会是一个很大的优势。 Program.Main() 方法中是否有要订阅的事件,在 Application.Run(new Form()) 之前,我可以设置图标和文本属性作为显示的表单,或任何其他解决方案?
编辑:我希望有这样的东西,因为有很多形式:
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
SomeClass.NewWinFormShown += NewWinFormShown;
Application.Run(new FrmTrackingList());
}
private static void NewWinFormShown(object sender, NewWinFormShownEventArgs e)
{
e.NewWinFormShown.Icon = ThisAppsIcon;//from resources
e.NewWinFormShown.Text += " (TEST)";
}
【问题讨论】:
-
您能否对主 DLL 进行任何更改?您可以在构造函数中传入图标和窗口文本并从 DLL 中设置它。然后根据实例化它的程序传入不同的值。
-
我可以对 DLL 进行更改,但我正在寻找更通用的解决方案,因为我有许多由第一个表单生成的表单。我添加了一个我希望的示例..
-
你可以用windows钩子做这种事情。然而,它不能替代适当的 .NET 技术。为这些表单提供另一个基类。