苏飞论坛

标题: TabControl控件的最佳实践,可以把一个窗体和用户控件添加进来 [打印本页]

作者: yangying    时间: 2012-7-11 10:40
标题: TabControl控件的最佳实践,可以把一个窗体和用户控件添加进来
看下效果吧
(, 下载次数: 666)
下面是一个公共的添加方法
看代码
[C#] 纯文本查看 复制代码
/// <summary>
        /// 添加一个选项卡
        /// </summary>
        /// <param name="MainTabControlKey">选项卡的键值</param>
        /// <param name="MainTabControlName">选项卡要显示的名称</param>
        /// <param name="objTabControl">要添加到的TabControl对象</param>
        /// <param name="objfrm">要被添加到选项卡的用户控件对象</param>
        private void addTabControl(string MainTabControlKey, string MainTabControlName, TabControl objTabControl, UserControl objfrm)
        {
            try
            {
                if (ErgodicModiForm(MainTabControlKey, MainTabControl))
                {
                    //声明一个选项卡对象
                    TabPage tabPage = new TabPage();
                    //选项卡的名称
                    tabPage.Name = MainTabControlKey;
                    //选项卡的文本
                    tabPage.Text = MainTabControlName;
                    //向选项卡集合添加新选项卡
                    MainTabControl.Controls.Add(tabPage);
                    //子窗体显示
                    objfrm.Show();
                    //子窗体大小设置为选项卡大小
                    objfrm.Size = tabPage.Size;
                    //将子窗体添加到选项卡中
                    tabPage.Controls.Add(objfrm);
                    //设置当前选项卡为新增选项卡
                    MainTabControl.SelectedTab.Name = MainTabControlKey;
                }
                else
                {
                    //设为当前选中的选项
                    MainTabControl.SelectTab(MainTabControlKey);
                }
            }
            catch (Exception)
            {
                showMessages objshowMesages = new showMessages();
                objshowMesages.ShowDialog("提示信息", "添加选项卡时出错,请检查是否正确连接数据");
            }
        }

下面的验证方法ErgodicModiForm
[C#] 纯文本查看 复制代码
/// </summary>
        /// <param name="MainTabControlKey">选项卡的键值</param>
        /// <param name="objTabControl">要添加到的TabControl对象</param>
        /// <returns></returns>
        private Boolean ErgodicModiForm(string MainTabControlKey, TabControl objTabControl)
        {
            //遍历选项卡判断是否存在该子窗体
            foreach (Control con in objTabControl.Controls)
            {
                TabPage tab = (TabPage)con;
                if (tab.Name == MainTabControlKey)
                {
                    return false;//存在
                }
            }
            return true;//不存在
        }


下面的调用添加
[C#] 纯文本查看 复制代码
try
            {
                //声部门控件对象
                UserDepartments objfrm = new UserDepartments();
                //调用添加选项卡的方法
                addTabControl("Departments", "部门信息", MainTabControl, objfrm);
            }
            catch (Exception)
            {
                showMessages objshowMesages = new showMessages();
                objshowMesages.ShowDialog("提示信息", "添加选项卡时出错,请检查是否正确连接数据");
            }

这样就可以动态的添加了, 还可以删除
[C#] 纯文本查看 复制代码
try
            {
                MainTabControl.TabPages.Remove(MainTabControl.SelectedTab);
            }
            catch
            {
                showMessages objshowMesages = new showMessages();
                objshowMesages.ShowDialog("提示信息", "已没有项目可删!");
            }


作者: lijiuzun    时间: 2013-4-3 11:25
非常感谢楼主帮了我的大忙,真的太感谢你啦!
作者: qq_cstech    时间: 2013-5-31 17:19
受教了,学习中……
作者: mxat    时间: 2013-6-19 11:09
受教了,学习中……
作者: Cheungnotes    时间: 2014-8-9 09:15
受教了,学习中……
作者: Transformer    时间: 2014-8-17 17:13
新手有点疑问,这个 UserControl objfrm是自定义类型的窗体才能这样显示吗?我试了下form类型的窗体貌似不能。。。
作者: 站长苏飞    时间: 2014-8-28 10:53
Transformer 发表于 2014-8-17 17:13
新手有点疑问,这个 UserControl objfrm是自定义类型的窗体才能这样显示吗?我试了下form类型的窗体貌似不 ...

是的是用户控件 没必要使用Form类型的,不方便,使用这个用户控件就够了,
作者: ed2000de    时间: 2015-1-4 13:00
受教了学习中……
作者: 1983444000    时间: 2015-5-10 20:07
站长苏飞 发表于 2014-8-28 10:53
是的是用户控件 没必要使用Form类型的,不方便,使用这个用户控件就够了,

UserDepartments这个怎么用的
作者: djdongting    时间: 2015-5-13 16:05
UserDepartments是楼主建好的一个UserControl。
我没弄清的是,UserControl是像form一样可以建立一个窗口,然后往里面放控件吗?我怎么找不到?怎么把好多控件放到UserControl里去?
作者: 站长苏飞    时间: 2015-5-13 16:15
djdongting 发表于 2015-5-13 16:05
UserDepartments是楼主建好的一个UserControl。
我没弄清的是,UserControl是像form一样可以建立一个窗口 ...

新建一个直接和窗体一样
作者: djdongting    时间: 2015-5-13 16:39
参考了楼主的方法,终于弄成了,效果和楼主的一样,学会了使用usercontrol,多谢了:),十分十分的感谢
作者: lh6005    时间: 2016-1-27 23:31
请问tabpage上面那个x是怎么弄出来的? 是否有源代码,给我一份呢?
作者: lh6005    时间: 2016-1-27 23:32
没提交成功?
作者: 吴方喜    时间: 2024-12-26 11:18
2016-1-27 23:31:25 请问tabpage上面那个x是怎么弄出来的? 是否有源代码,给我一份呢?




欢迎光临 苏飞论坛 (http://www.sufeinet.com/) Powered by Discuz! X3.4