0

我在同一个解决方案中有两个 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)";
    }
4

3 回答 3

1

您可以BaseForm为您在应用程序中使用的所有表单创建一个,这并不难

public class AppForm : Form
{
    public AppForm()
    {
        InitializeComponent();
        This.Icon = MyAppSettings.AppIcon; <--read here
        this.Text  = "App Text"
    }
}

编辑: 为了访问 dll 中的图标,只需在 Dll 中创建一个静态类并使用它

//In dll project
public static class MyAppSettings
{
     public Icon AppIcon {get;set;}
}

//In Exe project
static void Main()
{
    MyAppSettings.AppIcon = Resources.Icon;  <--set here
    //Rest of starting App Code goes here
}

然后让你的所有表单都来自AppForm. 这应该可以解决您的问题。

于 2013-07-31T20:25:41.503 回答
0

从 app.config 中的字段获取值。

使用 slowcheetah 为不同的构建设置不同的 app.config。

于 2013-07-31T18:53:41.127 回答
0

我不明白为什么你不能在每个Program.Main. 保存表格,然后调整它。代替

Application.Run(new Form());

Form myForm = new Form();
myForm.Icon = theFancyIcon; // from resources, or any other way you want to get it
myForm.Text = myTitleBarString;
Application.Run(myForm);

只需在每个版本中使代码不同,因为您已经有不同的 Program.Main 文件,这应该很容易。

于 2013-07-31T18:57:48.370 回答