老生常谈,如何在一个c#窗体下建立多个代码文件?

时间:2023-01-18 15:41:41
如题,一个窗体下,使用的是TabControl控件,因此代码量比较大,很不便维护。
该如何操作才能在这个窗体下建立多个代码文件,从而方便功能的管理。

8 个解决方案

#1


从道理上说,你完全可以把功能归进不同的类,而不是全堆积在form里。如果你已经别无选择,那么一样可以使用partial class Form1,把代码分散在不同的文件里

#2


可以将方法写类文件中,需要那个方法,调用类文件就可以了

#3


我经常用的方法是:form文件下只写一些处理控件的代码,而你想实现的一些功能,比如计算一个值,下载上传一个文件、压缩、解压等,这些方法可以写到一个单独的类中,然后在form下面调用即可。
有些时候,我一个form可能要调用十几个类文件

#4


使用 partial 关键字 同一个类 你就可以创建多个文件了
老生常谈,如何在一个c#窗体下建立多个代码文件?

#5


partial  就好,如果你想把他们配成一组得修改一下项目文件,不过有插件可以简单玩vsCommands插件,有个groupItems功能,可以把你这散写的分布类,在vs里组合起来,方便管理(效果就类似,winform的设计文件和代码文件是两个,但显示成一组)

#6


vsCommands插件还是有几个比较实用的功能,通常我的vs上是要安装了
我经常用的几个功能
1.打开的窗口的文件定位,解决方案文件比较多的时候,有时候想定位文件在那里不方便(比如转到定义后,你想看这文件在哪里就比较麻烦),这插件有"location in solutiong"直接定位到文件位置

2.groupItems,把几个文件组合显示成一组,比如你的要求。写分部类可以,不过建议显示成一组,免得不好管理

3.文件移动警告,鼠标误操作,经常会把文件无意移动到其他文件夹,vs自己是不警告的,而这个插件会警告你,让你确认是否移动

#7


最终还是使用的比较笨的办法,所有的文件使用用一个namespace和class。这样在工程资源管理器中,这个文件不能直接打开了,只能右击查看代码的方式打开。VS为啥不改进一下这里呢,这明明是个很常用的东西啊。

#8


 gf = new GroupForm();
            of = new OrderForm();
            guif = new GuideForm();
            stf = new SettingForm();
            gf.TopLevel = false;
            gf.Location = new Point(0, 0);
            gf.Show();
            panel2.Controls.Add(gf);

            of.TopLevel = false;
            of.Location = new Point(2000, 0);
            of.Show();
            panel2.Controls.Add(of);

            guif.TopLevel = false;
            guif.Location = new Point(2000, 0);
            guif.Show();
            panel2.Controls.Add(guif);

            stf.TopLevel = false;
            stf.Location = new Point(2000, 0);
            stf.Show();
            panel2.Controls.Add(stf);



   void CheckForm(int index)
        {
            CleanStyle();
            NowSelectIndex = index;
            foreach (Control i in panel2.Controls)
            {
                if (index == 0 && i == gf)
                {
                    gf.Location = new Point(0, 0);
                    label1.Image = Properties.Resources.wechat_chat2;
                    label1.BackColor = Color.FromArgb(229, 229, 229); 
                }
                else if (index == 1 && i == of)
                {
                    of.Location = new Point(0, 0);
                    label4.Image = Properties.Resources.wechat_integral2;
                    label4.BackColor = Color.FromArgb(229, 229, 229);
                    OrderForm.CheckType();
                }
                else if (index == 2 && i == guif)
                {
                    guif.Location = new Point(0, 0);
                    label5.Image = Properties.Resources.wechat_shop2;
                    label5.BackColor = Color.FromArgb(229, 229, 229); 
                    GuideForm.CheckType();

                }
                else if (index == 3 && i == stf)
                {
                    stf.Location = new Point(0, 0);
                    label6.Image = Properties.Resources.wechat_set2;
                    label6.BackColor = Color.FromArgb(229, 229, 229); 
                }
                else
                    i.Location = new Point(2000, 0);
            }
        }

你值得拥有

#1


从道理上说,你完全可以把功能归进不同的类,而不是全堆积在form里。如果你已经别无选择,那么一样可以使用partial class Form1,把代码分散在不同的文件里

#2


可以将方法写类文件中,需要那个方法,调用类文件就可以了

#3


我经常用的方法是:form文件下只写一些处理控件的代码,而你想实现的一些功能,比如计算一个值,下载上传一个文件、压缩、解压等,这些方法可以写到一个单独的类中,然后在form下面调用即可。
有些时候,我一个form可能要调用十几个类文件

#4


使用 partial 关键字 同一个类 你就可以创建多个文件了
老生常谈,如何在一个c#窗体下建立多个代码文件?

#5


partial  就好,如果你想把他们配成一组得修改一下项目文件,不过有插件可以简单玩vsCommands插件,有个groupItems功能,可以把你这散写的分布类,在vs里组合起来,方便管理(效果就类似,winform的设计文件和代码文件是两个,但显示成一组)

#6


vsCommands插件还是有几个比较实用的功能,通常我的vs上是要安装了
我经常用的几个功能
1.打开的窗口的文件定位,解决方案文件比较多的时候,有时候想定位文件在那里不方便(比如转到定义后,你想看这文件在哪里就比较麻烦),这插件有"location in solutiong"直接定位到文件位置

2.groupItems,把几个文件组合显示成一组,比如你的要求。写分部类可以,不过建议显示成一组,免得不好管理

3.文件移动警告,鼠标误操作,经常会把文件无意移动到其他文件夹,vs自己是不警告的,而这个插件会警告你,让你确认是否移动

#7


最终还是使用的比较笨的办法,所有的文件使用用一个namespace和class。这样在工程资源管理器中,这个文件不能直接打开了,只能右击查看代码的方式打开。VS为啥不改进一下这里呢,这明明是个很常用的东西啊。

#8


 gf = new GroupForm();
            of = new OrderForm();
            guif = new GuideForm();
            stf = new SettingForm();
            gf.TopLevel = false;
            gf.Location = new Point(0, 0);
            gf.Show();
            panel2.Controls.Add(gf);

            of.TopLevel = false;
            of.Location = new Point(2000, 0);
            of.Show();
            panel2.Controls.Add(of);

            guif.TopLevel = false;
            guif.Location = new Point(2000, 0);
            guif.Show();
            panel2.Controls.Add(guif);

            stf.TopLevel = false;
            stf.Location = new Point(2000, 0);
            stf.Show();
            panel2.Controls.Add(stf);



   void CheckForm(int index)
        {
            CleanStyle();
            NowSelectIndex = index;
            foreach (Control i in panel2.Controls)
            {
                if (index == 0 && i == gf)
                {
                    gf.Location = new Point(0, 0);
                    label1.Image = Properties.Resources.wechat_chat2;
                    label1.BackColor = Color.FromArgb(229, 229, 229); 
                }
                else if (index == 1 && i == of)
                {
                    of.Location = new Point(0, 0);
                    label4.Image = Properties.Resources.wechat_integral2;
                    label4.BackColor = Color.FromArgb(229, 229, 229);
                    OrderForm.CheckType();
                }
                else if (index == 2 && i == guif)
                {
                    guif.Location = new Point(0, 0);
                    label5.Image = Properties.Resources.wechat_shop2;
                    label5.BackColor = Color.FromArgb(229, 229, 229); 
                    GuideForm.CheckType();

                }
                else if (index == 3 && i == stf)
                {
                    stf.Location = new Point(0, 0);
                    label6.Image = Properties.Resources.wechat_set2;
                    label6.BackColor = Color.FromArgb(229, 229, 229); 
                }
                else
                    i.Location = new Point(2000, 0);
            }
        }

你值得拥有