当前位置:编程学习 > C#/ASP.NET >>

groupBox 切换标签页时判断下是否能切换的问题

问个winform 开发的问题 
我想在用groupBox 这个控件的时候 切换标签页时判断下是否能切换 能做吗
就是比如没有满足一个条件 就不让点第二个标签页
有人会吗 找了半天 也没找到合适的属性或事件
--------------------编程问答-------------------- groupBox有标签页?你说的是tabcontrol吧? --------------------编程问答-------------------- 同楼上。一定是在说TabControl --------------------编程问答-------------------- 对对 是TabControl说错了,不好意思 --------------------编程问答-------------------- 没找到控件自带的什么方法或属性,自己想了个折,弄好了 发出来给大家参考下

        /// <summary>
        /// 当前Tab索引
        /// </summary>
        private int TabControlIndex = 0;
        /// <summary>
        /// Tab集合验证通过标识
        /// </summary>
        private Hashtable HtTabsValidate = new Hashtable();


        private void tCTYBM_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (TabControlIndexCanChanged(tCTYBM.SelectedIndex))
            {
                TabControlIndex = tCTYBM.SelectedIndex;
            }
            else
            {
                if (tCTYBM.SelectedIndex != TabControlIndex)
                {
                    tCTYBM.SelectedIndex = TabControlIndex;
                    MessageBox.Show("请先完成" + tCTYBM.TabPages[TabControlIndex].Text);
                }
            }
        }

        #region 私有类
        private bool TabControlIndexCanChanged(int currentTabIndex)
        {
            if (currentTabIndex == 0)
                return true;
            for (int tabIndex = 0; tabIndex < currentTabIndex; tabIndex++)
            {
                if (!Convert.ToBoolean(HtTabsValidate[tabIndex]))
                {
                    return false;
                }
            }
            return true;
        }
--------------------编程问答-------------------- 要补上在控件初始化的时候

            //令所有选项卡验证通过标识全为false
            for (int tabIndex = 0; tabIndex < tCTYBM.TabPages.Count; tabIndex++)
            {
                HtTabsValidate[tabIndex] = false;
            }

然后在每次通过验证后将对应的键值置为true即可 --------------------编程问答--------------------

  private void tabControl_Selecting(object sender, TabControlCancelEventArgs e)
        {
            if (条件)
            {
                 e.Cancel = true;
            }
        }
--------------------编程问答--------------------
引用 6 楼 hwenycocodq520 的回复:

  private void tabControl_Selecting(object sender, TabControlCancelEventArgs e)
        {
            if (条件)
            {
                 e.Cancel = true;
            }
        }

多谢,这个事件不错,这样效果更好了 --------------------编程问答--------------------
引用 7 楼 bosstwobread 的回复:
Quote: 引用 6 楼 hwenycocodq520 的回复:


  private void tabControl_Selecting(object sender, TabControlCancelEventArgs e)
        {
            if (条件)
            {
                 e.Cancel = true;
            }
        }

多谢,这个事件不错,这样效果更好了
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,