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

}
}
界面如下:
代码实现如下:

































































































