Notieren Sie Probleme, die bei der WinForm- und Paketinstallation aufgetreten sind

Zum Fehler bei der Fokuseinstellung des Unterformular-Steuerelements aufgrund der Verwendung von ListView:

        Dies kann durch die Verwendung von ListView als Auslöser zum Hinzufügen eines Unterformulars verursacht werden. ListView-Fokusproblem: Führen Sie einen kleinen Test durch, verwenden Sie das Button-Click-Ereignis, um das Unterformular zur GroupBox oder zum Panel hinzuzufügen, und verwenden Sie dann das SelectedIndexChanged-Ereignis des Elements im ListView zum Hinzufügen des Unterformulars. Das Formular wird der GroupBox oder dem Panel hinzugefügt und der Fokus eines bestimmten Steuerelements (innerhalb der TextBox) wird in der Methode zum Laden des Unterformulars festgelegt:

        
        //这两个事件分别是Button按钮和ListView的点击事件/选中事件
        
        private void button1_Click(object sender, EventArgs e)
        {
            this.GroupBox1.Controls.Clear();
            Form2 form = new Form2();
            form.TopLevel = false;
            form.FormBorderStyle = FormBorderStyle.None;
            this.GroupBox1.Controls.Add(form);
            form.Dock = DockStyle.Fill;
            form.TopMost = true;
            form.Show();
        }
        private void MenuSelectedIndexChanged(object sender, EventArgs e)
        {
            this.GroupBox1.Controls.Clear();
            Form2 form = new Form2();
            form.TopLevel = false;
            form.FormBorderStyle = FormBorderStyle.None;
            this.GroupBox1.Controls.Add(form);
            form.Dock = DockStyle.Fill;
            form.TopMost = true;
            form.Show();
            WOMenu.SelectedItems.Clear();
        }


        //以及Form2中的加载方法
        private void Form2_Load(object sender, EventArgs e)
        {
            textBox1.Focus();
        }

         Klicken Sie dann jeweils auf die beiden Steuerelemente und beobachten Sie, ob der Fokus der TextBox in Form2 erfolgreich festgelegt wurde. Durch Beobachtung können Sie feststellen, dass der Fokus des von Button hinzugefügten Unterformulars erfolgreich festgelegt wurde, während die Einstellung von hinzugefügt wurde ListView schlägt fehl (vorläufig als , das ist OK, Load, Shown, Activated usw. Einstellung Der Fokus in der Veranstaltung ist gescheitert!Form bezeichnet, ich kenne den genauen Grund nicht. Falls das jemand sieht Problem, Sie können mir eine private Nachricht senden und es mir erklären und ich werde Ihnen vielmals danken! Orz verehrt noch einmal den Chef). Okay, hier ist eine andere Lösung: Setzen Sie den Fokus von TextBox im Paint-Ereignis von istView-FokusproblemL

        Die Ausführungsreihenfolge beim Laden des Formulars ist: Laden——> Das aktivierte Ereignis wird nur ausgelöst, wenn der Fokus erreicht wird (da ich das Unterformular zum Hauptformular hinzugefügt habe, liegt der Fokus immer noch auf dem Hauptformular)——> Angezeigt ——>Malen.

Bezüglich des Fehlers der Breiten- und Höheneinstellungen des ComboBox-Steuerelements:

        Die Breite und Höhe des Combobox-Steuerelements sind mit der Schriftgröße verknüpft. Passen Sie die Schriftgröße an, um die Breite und Höhe anzupassen.

Der Inhalt des ComboBox-Steuerelements kann zur Laufzeit geändert werden:

        Setzen Sie die DropDownStyle-Eigenschaft des Combobox-Steuerelements auf:DropDownList

Über die Skin-Steuerung „SkinEngine“:

        Wenn Sie festlegen, dass alle Formulare dieselbe Skin haben:Sie können das Steuerelement nur im ersten Formular hinzufügen und dann seine Eigenschaften so festlegen, dass sie für alle Formulare gelten. Beispiel:

                Das erste Formular ist das Anmeldeformular. Ändern Sie daher die Designer-Initialisierungsdatei des Anmeldeformulars und suchen Sie die Instanziierung des Skin-SteuerelementsSkinEngine Standort

                Wille

                        this.skinLogin = new Sunisoft.IrisSkin.SkinEngine();

                Ändern zu:SkinAllForm = true bedeutet, dass es auf alle Formulare angewendet werden soll

                        this.skinLogin = new Sunisoft.IrisSkin.SkinEngine((System.ComponentModel.Component)(this))
                        {
                                SkinAllForm = true,
                                SkinFile = Application.StartupPath + @"\SkinUI\MP10\MP10.ssk"
                        };

        Die Beschriftungsfarbe kann nach Verwendung des SkinEngine-Skin-Steuerelements nicht geändert werden:Sie kann im Ladeereignis zurückgesetzt werden Die Farbe, die das Etikett haben sollte.

        Die Hintergrundfarbe von Button kann nach der Verwendung des SkinEngine-Skin-Steuerelements nicht geändert werden:Sie können die Tag-Eigenschaft des Button-Steuerelements ändern Stellen Sie es auf dasselbe wie das SkinEngine-Skin-Steuerelement ein und legen Sie dann die Farbe des Button-Steuerelements fest. Beispiel:

                btn_hi.BackColor = Color.Blue;
                btn_hi.Tag = 9999;//皮肤控件的Tag属性为9999,所以Button也为9999

Bezüglich des langsamen Ladens von Formularsteuerelementen (z. B. das Hinzufügen von adaptivem Code oder zu viele Steuerelemente):

        Sie können diesem Formulardoppelte PufferungCode hinzufügen:

                protected override CreateParams CreateParams
                {
                    get
                    {
                        CreateParams cp = base.CreateParams;
                        cp.ExStyle |= 0x02000000; // 用双缓冲绘制窗口的所有子控件
                        return cp;
                    }
                }

Informationen zum Blinken des GroupBox-Steuerelementrahmens, wenn die Maus darüber bewegt wird:

        Sie können die FlatStyle-Eigenschaft des GroupBox-Steuerelements auf Folgendes festlegen:System

Bezüglich des Problems, bei dem das SplitContainer-Steuerelement in einem Formular verwendet wird und das dazu führt, dass das Steuerelement verloren geht, wenn das Formular als Unterformular angezeigt wird:

        Wenn das SplitContainer-Steuerelement das gesamte Formular einnimmt und die Dock-Eigenschaft den Wert „Füllung“ hat:Ändern Sie die Dock-Eigenschaft von SplitContainer auf „Keine“ (dies wird der Fall sein). Füllen Sie zuerst aus. Kopieren Sie die Formulargröße zu diesem Zeitpunkt, setzen Sie sie dann auf „Keine“ und fügen Sie die Eigenschaft „Größe“ hinzu. Anschließend wird das Formular als Unterformular angezeigt und ist normal.

Bezüglich der Verpackung und Installation von WinForm-Programmen:

  1. Installieren Sie die VS-Erweiterung: Microsoft Visual Studio Installer Project.
  2. Klicken Sie mit der rechten Maustaste auf die Lösung und fügen Sie ein Setup-Projekt hinzu.
  3. Fügen Sie den gesamten Inhalt des Debug-Verzeichnisses des zu packenden Projekts in den Ordner „Anwendungsordner“ ein.
  4. Klicken Sie mit der rechten Maustaste auf die Exe-Datei und wählen Sie Verknüpfung zu „Projektname“ erstellen (Verknüpfung erstellen).
  5. Ändern Sie den Namen der Verknüpfung sowie das Symbol in den Eigenschaften. Der Pfad des Symbolsdarf nicht auf Chinesisch seindarf nicht sein auf Chinesisch< /span>, und ziehen Sie dann die Verknüpfung auf den Desktop des Benutzers und das Programmmenü des Benutzers), die Verknüpfung wird nach der Installation auf dem Desktop des Benutzers generiert . Kann keine chinesischen Zeichen haben
  6. Kopieren Sie dann das Deinstallationsprogramm (Pfad: C:\Windows\System32\msiexec.exe) in den Ordner „Anwendungsordner“. Klicken Sie mit der rechten Maustaste, um eine Verknüpfung für das Deinstallationsprogramm zu erstellen, und ändern Sie außerdem den Namen und das Symbol der Verknüpfung. Hinweis: Wählen Sie dieses Setup-Projekt aus, klicken Sie auf Eigenschaften, und ändern Sie den ProductCode. Kopieren Sie den Inhalt, konfigurieren Sie ProductName (den Namen während der Installation) und ändern Sie die Argumente der Deinstallationsverknüpfung in: /X... (kopierter Inhalt). Nach /X steht ein Leerzeichen. Nachdem die Konfiguration abgeschlossen ist Klicken Sie mit der rechten Maustaste auf das Setup-Projekt, um es zu generieren. Fertig. Debug enthält die gepackten Dateien, normalerweise sind es zwei: setup.exe und Setup.msi.

    

     

Guess you like

Origin blog.csdn.net/qq_51502150/article/details/126845990