Laden...

Mehrere Forms im Projekt. Startform festlegen.

Erstellt von BlackSimon vor 5 Jahren Letzter Beitrag vor 5 Jahren 1.462 Views
BlackSimon Themenstarter:in
42 Beiträge seit 2018
vor 5 Jahren
Mehrere Forms im Projekt. Startform festlegen.

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.

1.029 Beiträge seit 2010
vor 5 Jahren

Hi,

schau mal in die Program.cs

LG

BlackSimon Themenstarter:in
42 Beiträge seit 2018
vor 5 Jahren

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>
1.029 Beiträge seit 2010
vor 5 Jahren

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>

BlackSimon Themenstarter:in
42 Beiträge seit 2018
vor 5 Jahren

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. 😉