在TabControl基础上实现的一个翻页机制

来源:互联网 发布:淘宝收货地址在哪里改 编辑:程序博客网 时间:2024/04/27 11:39
    在一个form中,如果输入项太多,那么最好不要都堆放在一个界面中,比较好的办法是让用户分步填写(比如很多招聘网站让用户填写信息的方式都是这样的)。在TabControl(.Net2.0)的基础上,我把每一个tabPage作为一页,通过实现一些特定的事件处理函数,达到了一个简单翻页效果。实现很简单,不对的地方还请大家多指教。
    界面如下:


代码实现如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication1
{
    
public partial class Form1 : Form
    
{
        
private delegate void ChangePageHandler();  // 翻页函数代理

        
private int currentIndex = 0;   // 记录当前选项卡索引
        private bool changeLock = true// 页面切换锁,如果为true,那么禁止切换tabpage

        
public Form1()
        
{
            InitializeComponent();
        }


        
private void Form1_Load(object sender, EventArgs e)
        
{
            
this.currentIndex = tabControl1.SelectedIndex;
        }


        
/// <summary>
        
/// 选择进入下一个选项卡
        
/// </summary>

        private void SelectNextTabPage()
        
{
            
int count = tabControl1.TabPages.Count;
            currentIndex 
= this.tabControl1.SelectedIndex + 1;
            
if (currentIndex > count - 1)
            
{
                currentIndex 
= count - 1;
            }

            
this.tabControl1.SelectTab(currentIndex);
        }


        
/// <summary>
        
/// 选择退回到上一个选项卡
        
/// </summary>

        private void SelectPreviousTabPage()
        
{
            currentIndex 
= this.tabControl1.SelectedIndex - 1;
            
if (currentIndex < 0)
            
{
                currentIndex 
= 0;
            }

            
this.tabControl1.SelectTab(currentIndex);
        }


        
/// <summary>
        
/// 阻止用户通过点击选项卡来切换tabpage
        
/// </summary>
        
/// <param name="sender"></param>
        
/// <param name="e"></param>

        private void tabControl1_Selecting(object sender, TabControlCancelEventArgs e)
        
{
            e.Cancel 
= changeLock;
        }


        
/// <summary>
        
/// 代理翻页
        
/// </summary>
        
/// <param name="handler">具体的翻页函数</param>

        private void ChangePage(ChangePageHandler handler)
        
{
            
this.changeLock = false;
            handler();
            
this.changeLock = true;
        }



        
/// <summary>
        
/// 上一步
        
/// </summary>
        
/// <param name="sender"></param>
        
/// <param name="e"></param>

        private void buttonPreviousStep1_Click(object sender, EventArgs e)
        
{
            
this.ChangePage(this.SelectPreviousTabPage);
        }


        
/// <summary>
        
/// 下一步
        
/// </summary>
        
/// <param name="sender"></param>
        
/// <param name="e"></param>

        private void buttonNextStep1_Click(object sender, EventArgs e)
        
{
            
this.ChangePage(this.SelectNextTabPage);
        }


    }

}
原创粉丝点击