>  기사  >  백엔드 개발  >  C# 개발 WinForm이 탭의 여러 양식을 통합하고 로드하여 양식 재사용에 대한 자세한 설명을 얻는 방법(그림)

C# 개발 WinForm이 탭의 여러 양식을 통합하고 로드하여 양식 재사용에 대한 자세한 설명을 얻는 방법(그림)

黄舟
黄舟원래의
2017-03-10 14:10:593051검색

최근에 해야 할 프로젝트는 메뉴에서 선택하는 수고를 피하기 위해 여러 양식을 함께 통합하고 TabControl 탭을 통해 전환해야 합니다. 이 디자인 구현도 사용하여 어느 정도 코드 중복을 달성합니다. 아이디어를 확장하면 양식에 몇 가지 작은 기능을 추가하고 필요할 때 컨테이너에 로드할 수 있습니다. 이렇게 하면 사용자 컨트롤을 사용할 때 자주 발생하는 오류 문제도 피할 수 있습니다. 이 기능은 이전 메뉴 선택을 통해 탭에 로드하는 기능과 유사하지만 차이점은 자극 소스가 다르다는 것입니다.

프로젝트 파일 구성:

주 프로그램 인터페이스:

tabControl1 쓰기 두 옵션 페이지의 태그에 각각 form2 및 form3의 클래스 이름이 있습니다.

포함된 양식 Form2:

포함된 양식 Form3:

실행 결과: form2와 form3의 양식이 모두 form1의 탭에 통합되어 표시됩니다.

Form1 구현 코드:

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;

        }
    }
}



위 내용은 C# 개발 WinForm이 탭의 여러 양식을 통합하고 로드하여 양식 재사용에 대한 자세한 설명을 얻는 방법(그림)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.