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

    在一个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);
        }


    }

}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值