Hallo Leute,
ich habe ein Projekt mit mehreren Forms.
Beim Starten der Anwendung wird standardmäßig Form1 aufgerufen.
Wie kann ich festlegen, dass eine andere Form, bspw. Form2, beim Starten der Anwendung
als erstes angezeigt wird?
Im WPF konnte man das in der app-Datei festlegen.
Danke, das wars!
Application.Run(new Form1());
Form1 durch Form2 ersetzen.
Kann ich das aber nicht auch in der app.config festlegen?
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
</startup>
</configuration>
Hi,
um das tun zu können müsstest du eine entsprechende Konfigurationserweiterung programmieren. Tendenziell möglich, praktisch aber wohl eher nicht nötig.
(Im Standard geht es jedenfalls nicht)
LG
Edit: Prinzipiell fallen mir mehrere Varianten ein, wie man das ganze darstellen könnte.
Machen würde ich das in der Regel aber nicht - sehe keinen Sinn dahinter.
Im einfachsten Fall legst du dir einen string in der app.config (via Properties.Settings) an, der den Namen der Form die zu Beginn erstellt werden soll enthält - und erzeugst einfach eine Instanz davon.
Die Program.cs könnte dann folgendermaßen aussehen:
using System;
using System.Windows.Forms;
namespace WindowsFormsApp4
{
static class Program
{
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(GetStartForm());
}
static Form GetStartForm()
{
var formName = Properties.Settings.Default.StartFormName; // = WindowsFormsApp4.Form1 (Namespace.ClassName)
try
{
var instance = System.Reflection.Assembly.GetExecutingAssembly().CreateInstance(formName) as Form;
return instance;
}
catch (Exception)
{
return new Form1(); // just pick the default form
}
}
}
}
Generierte App.config sieht dann so aus:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="WindowsFormsApp4.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
</startup>
<applicationSettings>
<WindowsFormsApp4.Properties.Settings>
<setting name="StartFormName" serializeAs="String">
<value>WindowsFormsApp4.Form2</value>
</setting>
</WindowsFormsApp4.Properties.Settings>
</applicationSettings>
</configuration>
Achso, doch so kompliziert.
Naja, ich habe mir das einfacher vorgestellt mit der App.config.
Z.B. einfach eine StartURI eingeben, wie in WPF, und das wars.
Also dann gefällt mir die 1. Variante doch ein wenig besser. 😉