在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);
}
}
}
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);
}
}
}
- 在TabControl基础上实现的一个翻页机制
- 实现一个特殊的栈,在实现栈的基本功能基础上,在实现返回栈中最小元素的操作
- 在libevent事件基础上实现一个TCPServer类
- 在matlab基础上简单实现一个神经网络算法
- 在Jeff Prosise井字棋的基础上做的一个五子棋
- 在Jeff Prosise井字棋的基础上做的一个五子棋
- 如何实现一个翻页效果的widget
- 在对OAUTH2理解基础上的一个小故事
- 在已有服务器的基础上 copy一个个人博客
- 在MSP430的基础上实现bootloader的功能
- 在 CollapsingToolbarLayout 的基础上实现的另一种折叠效果
- displaytag的翻页机制
- displaytag的翻页机制
- Android在标准linux基础上对休眠唤醒的实现
- Android在标准linux基础上对休眠唤醒的实现
- Android在标准linux基础上对休眠唤醒的实现
- 在Android动画基础上实现自定义的动画效果
- Android在标准linux基础上对休眠唤醒的实现
- 开始使用全免费的Eclipse
- 干掉Webshell!——站长安全顾问系列话题二
- 角落里的木马查杀之战——站长安全顾问系列话题之三
- 统计在线用户
- 08啊08
- 在TabControl基础上实现的一个翻页机制
- 知已知彼百战百胜:买股下单前应搞清楚的24个问题
- C#面向对象设计模式纵横谈 学习笔记10 Decorator 装饰(结构型模式)
- javascript
- javascript2
- 广义表(GeneralList)的c++类实现
- ln -sv tclsh8.4 /tools/bin/tclsh
- 架构设计(二)——高可用性设计
- python第十课笔记(本地变量和全局变量)