C#-Entwicklung So integrieren und laden Sie mehrere Formulare in WinForm-Registerkarten, um die Wiederverwendung von Formularen zu erreichen Detaillierte Erklärung (Bild)

黄舟
Freigeben: 2017-03-10 14:10:59
Original
3057 Leute haben es durchsucht

Ein Projekt, das ich kürzlich durchführen muss. Um die Mühe der Auswahl aus dem Menü zu vermeiden, müssen mehrere Formulare zusammengefügt und über die Registerkarte „TabControl“ umgeschaltet werden. Diese Designimplementierung ermöglicht auch eine gewisse Codeduplizierung Und als Erweiterung der Idee können wir einige kleine Funktionen in das Formular einfügen und sie bei Bedarf in den Container laden. Dadurch kann auch das Problem häufiger Fehler bei der Verwendung von Benutzersteuerelementen vermieden werden. Diese Funktion ähnelt der vorherigen Funktion zum Laden eines Formulars in eine Registerkarte über die Menüauswahl. Der Unterschied besteht darin, dass die Stimulationsquelle eine andere ist.

Projektdateiorganisation:

Hauptprogrammschnittstelle:

In tabControl1 schreiben die Klassennamen von form2 und form3 auf den Tags der beiden Optionsseiten.

Enthaltenes Formular Form2:

Enthaltenes Formular Form3:

Ergebnisse ausführen: Beide Formulare aus Formular2 und Formular3 werden in die Registerkarten in Formular1 integriert und angezeigt:

Form1-Implementierungscode:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Windows.Forms;

namespace tabWindowTest
{
    public partial class Form1 : Form
    {
        public int[] s = {0, 0};         //用来记录from是否打开过

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //初始打开时就加载Form2
            string formClass = "tabWindowTest.Form2";
            GenerateForm(formClass, tabControl1);
        }

        private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
        {
            if(s[tabControl1.SelectedIndex]==0)    //只生成一次
            {
                btnX_Click(sender, e);
            }
        }

        /// <summary>
        /// 通用按钮点击选项卡 在选项卡上显示对应的窗体
        /// </summary>
        private void btnX_Click(object sender, EventArgs e)
        {
            string formClass = ((TabControl)sender).SelectedTab.Tag.ToString();

            //string form = tabControl1.SelectedTab.Tag.ToString();

            GenerateForm(formClass, sender);

        }


        //在选项卡中生成窗体
        public void GenerateForm(string form, object sender)
        {
            // 反射生成窗体
            Form fm = (Form)Assembly.GetExecutingAssembly().CreateInstance(form);

            //设置窗体没有边框 加入到选项卡中
              fm.FormBorderStyle = FormBorderStyle.None;
            fm.TopLevel = false;
            fm.Parent = ((TabControl)sender).SelectedTab;
            fm.ControlBox = false;
            fm.Dock = DockStyle.Fill;
            fm.Show();

            s[((TabControl)sender).SelectedIndex] = 1;

        }
    }
}
Nach dem Login kopieren



Das obige ist der detaillierte Inhalt vonC#-Entwicklung So integrieren und laden Sie mehrere Formulare in WinForm-Registerkarten, um die Wiederverwendung von Formularen zu erreichen Detaillierte Erklärung (Bild). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!