C# winform自定义翻页控件详解

C# winform自定义翻页控件详解,第1张

概述C# winform中自定义的翻页控件,自己设计,供大家参考,具体内容如下1.主要是使用控件绑定点击事件  

C#  winform中自定义的翻页控件,自己设计,供大家参考,具体内容如下

1.主要是使用控件绑定点击事件  

用到的控件分别为pictureBox   lable  上一页pbPage_Prev    下一页 pbPage_Next  首页 pbPage_Begin   尾页pbPage_End  是pictureBox控件加背景图 

“第  页/ 共  页” 是一个lable “labPageInfo”    在lable上面加了一个隐藏的textBox 控件 “txtPageInfo”

2.将这个翻页的功能单独写在用户控件 ucPageTurn 里面  然后在每个页面直接应用就可以了 

下面只是把ucPageTurn写了出来

还需要在winform页面上应用上

using System;using System.Collections.Generic;using System.ComponentModel;using System.Drawing;using System.Data;using System.linq;using System.Text;using System.windows.Forms;namespace Demo{ public partial class ucPageTurn : UserControl,IMessageFilter {  private const int SIZE_HEIGHT = 40;  private const int SIZE_MINWIDTH = 84;  private const int SIZE_INFO_MINWIDTH = 188;  public ucPageTurn()  {   Application.AddMessageFilter(this);    InitializeComponent();   this.borderStyle = System.windows.Forms.borderStyle.None;   this.MinimumSize = new Size(SIZE_MINWIDTH,0);   this.disposed += new EventHandler(ucPages_disposed);      //this.MouseClick += new MouseEventHandler(ucKeyboard_Close);   PageChanged += new PageChangedHandle(new PageChangedHandle((oldPage,newPage,e) => { }));   inputGotFocus += new inputFocusHandle(new inputFocusHandle((sender,e) => { }));    //inputLostFocus += new inputFocusHandle(new inputFocusHandle((sender,e) => { }));   inputGotFocus += new inputFocusHandle(new inputFocusHandle((sender,e) => { }));    inputLostFocus += new inputFocusHandle(new inputFocusHandle((sender,e) => { }));   inputMouseDown += new inputMouseHandle(new inputMouseHandle((sender,e) => { }));   inputMouseUp += new inputMouseHandle(new inputMouseHandle((sender,e) => { }));   inputTextClick += new EventHandler(new EventHandler((sender,e) => { }));   inputKeyDown += new inputKeyHandle(new inputKeyHandle((sender,e) => { }));   inputKeyUp += new inputKeyHandle(new inputKeyHandle((sender,e) => { }));   inputKeyPress += new inputKeyPressHandle(new inputKeyPressHandle((sender,e) => { }));   inputTextChanged += new EventHandler(new EventHandler((sender,e) => { }));   this.Backcolor = color.White;   labPageInfo.Backcolor = this.Backcolor;   this.Resize += new EventHandler(ucPages_Resize);   //labPageInfo.MouseDoubleClick += new MouseEventHandler(labPageInfo_MouseDoubleClick);   pbPage_Prev.MouseDown += new MouseEventHandler(pbPage_Prev_MouseDown);   pbPage_Prev.MouseUp += new MouseEventHandler(pbPage_Prev_MouseUp);   pbPage_Next.MouseDown += new MouseEventHandler(pbPage_Next_MouseDown);   pbPage_Next.MouseUp += new MouseEventHandler(pbPage_Next_MouseUp);   pbPage_Begin.MouseDown += new MouseEventHandler(pbPage_Begin_MouseDown);   pbPage_Begin.MouseUp += new MouseEventHandler(pbPage_Begin_MouseUp);   pbPage_End.MouseDown += new MouseEventHandler(pbPage_End_MouseDown);   pbPage_End.MouseUp += new MouseEventHandler(pbPage_End_MouseUp);   txtPageInfo.TextChanged += new EventHandler(txtPageInfo_TextChanged);   txtPageInfo.GotFocus += new EventHandler(txtPageInfo_GotFocus);   txtPageInfo.Click += new EventHandler(txtPageInfo_Click);   txtPageInfo.Text = m_strText;   txtPageInfo.Visible = m_blnShowTxtPageInfo;   m_blnIsautoJump = false;   m_timerAutopage.Enabled = false;   m_timerAutopage.Interval = WAIT_FOR_autoJUMP;   m_timerAutopage.Tick += new EventHandler(timerAutopage_Tick);  }  private voID ucPages_Load(object sender,EventArgs e)  {   setStatus();  }  private voID ucPages_disposed(object sender,EventArgs e)  {   Application.RemoveMessageFilter(this);  }  public bool PreFilterMessage(ref System.windows.Forms.Message MyMessage)  {   if (MyMessage.Msg == 0x204 || MyMessage.Msg == 0x205)   {    return true;   }   return false;  }  //设置控件的自适应大小  private voID ucPages_Resize(object sender,EventArgs e)  {   this.Height = SIZE_HEIGHT;   pbPage_Begin.Location = new Point(0,0);   pbPage_Begin.Size = new Size(SIZE_HEIGHT,SIZE_HEIGHT);   pbPage_Prev.Location = new Point(pbPage_Begin.WIDth + 2,pbPage_Begin.top);   pbPage_Prev.Size = pbPage_Begin.Size;   pbPage_End.Location = new Point(this.WIDth - pbPage_End.WIDth,pbPage_Begin.top);   pbPage_End.Size = pbPage_Begin.Size;   pbPage_Next.Location = new Point(this.WIDth - pbPage_Next.WIDth - pbPage_End.WIDth - 2,pbPage_Begin.top);   pbPage_Next.Size = pbPage_Begin.Size;   if (this.WIDth < SIZE_INFO_MINWIDTH)   {    labPageInfo.Visible = false;    txtPageInfo.Visible = false;   }   else   {    labPageInfo.Location = new Point(pbPage_Prev.WIDth + pbPage_Prev.WIDth + 3,2);    labPageInfo.Size = new Size(pbPage_Next.left - labPageInfo.left - 3,pbPage_Prev.Height);        txtPageInfo.Location = new Point(pbPage_Prev.left + pbPage_Prev.WIDth + 5,11);    //txtPageInfo.Size = new Size(pbPage_Next.left - labPageInfo.left,15);    if (m_blnShowLabel && !labPageInfo.Visible) labPageInfo.Visible = true;    if (m_blnShowLabel && !txtPageInfo.Visible) txtPageInfo.Visible = true;   }   if (m_blnShowTxtPageInfo)   {    txtPageInfo.Size = new Size(79,labPageInfo.Height);   }   else   {    txtPageInfo.Size = new Size(0,labPageInfo.Height);   }  }  //点击lablelabPageInfo 显示txtPageInfo  private voID labPageInfo_Click(object sender,EventArgs e)  {   if (!txtPageInfo.Visible)   {    showJumpPageStatus(true);    inputTextClick(txtPageInfo,new EventArgs());   }   else {    showJumpPageStatus(false);   }  }  public voID showJumpPageStatus(Boolean isShow)  {   if (isShow)   {    txtPageInfo.Visible = true;    txtPageInfo.Text = string.Empty;    txtPageInfo.Focus();   }   else   {    txtPageInfo.Visible = false;   }  }  //上一页  private voID pbPage_Prev_MouseDown(object sender,MouseEventArgs e)  {   pbPage_Prev.Image = global::Pku.CFM.Controls.PropertIEs.Resources.Page_Prev_D;   m_blnIsPrevDown = true;   m_timerAutopage.Enabled = true;  }  private voID pbPage_Prev_MouseUp(object sender,MouseEventArgs e)  {   pbPage_Prev.Image = global::Pku.CFM.Controls.PropertIEs.Resources.Page_Prev_N;   m_blnIsPrevDown = false;   if (m_blnIsautoJump)   {    leaveautoJumpMode();    return;   }   m_timerAutopage.Enabled = false;   if (1 == m_intCurPageIndex) return;   int intoldPage = m_intCurPageIndex;   m_intCurPageIndex--;   setStatus();   PageChanged(intoldPage,m_intCurPageIndex,new EventArgs());  }  //下一页  private voID pbPage_Next_MouseDown(object sender,MouseEventArgs e)  {     pbPage_Next.Image = global::Pku.CFM.Controls.PropertIEs.Resources.Page_Next_D;   m_blnIsNextDown = true;   m_timerAutopage.Enabled = true;  }  private voID pbPage_Next_MouseUp(object sender,MouseEventArgs e)  {   pbPage_Next.Image = global::Pku.CFM.Controls.PropertIEs.Resources.Page_Next_N;   m_blnIsNextDown = false;   if (m_blnIsautoJump)   {    leaveautoJumpMode();    return;   }   m_timerAutopage.Enabled = false;   if (m_intPageCount == m_intCurPageIndex) return;   int intoldPage = m_intCurPageIndex;   m_intCurPageIndex++;   setStatus();   PageChanged(intoldPage,new EventArgs());  }  //首页  private voID pbPage_Begin_MouseDown(object sender,MouseEventArgs e)  {      pbPage_Begin.Image = global::Pku.CFM.Controls.PropertIEs.Resources.PageVIEw_Begin_D;   m_blnIsBeginDown = false;   m_timerAutopage.Enabled = true;  }  private voID pbPage_Begin_MouseUp(object sender,MouseEventArgs e)  {   pbPage_Begin.Image = global::Pku.CFM.Controls.PropertIEs.Resources.PageVIEw_Begin_N;   m_blnIsBeginDown = false;   int intoldPage = m_intCurPageIndex;   if (1 == m_intCurPageIndex) return;   m_intCurPageIndex = 1;      setStatus();   PageChanged(intoldPage,new EventArgs());   m_blnIsautoJump = false;   m_timerAutopage.Stop();  }  //尾页  private voID pbPage_End_MouseDown(object sender,MouseEventArgs e)  {      pbPage_End.Image = global::Pku.CFM.Controls.PropertIEs.Resources.PageVIEw_End_N;   m_blnIsEndDown = true;   m_timerAutopage.Enabled = true;  }  private voID pbPage_End_MouseUp(object sender,MouseEventArgs e)  {   pbPage_End.Image = global::Pku.CFM.Controls.PropertIEs.Resources.PageVIEw_End_D;   m_blnIsEndDown = false;   int intoldPage = m_intCurPageIndex;   if (m_intCurPageIndex == m_intPageCount)return;   m_intCurPageIndex = m_intPageCount;      setStatus();   PageChanged(intoldPage,new EventArgs());   m_blnIsautoJump = false;   m_timerAutopage.Stop();     }    //翻页按钮的状态  private voID setStatus()  {   //如果页数为0,翻页的按钮全部不显示   if (m_intPageCount <= 0)   {    labPageInfo.Text = "";    pbPage_Prev.Visible = false;    pbPage_Next.Visible = false;    pbPage_Begin.Visible = false;    pbPage_End.Visible = false;    txtPageInfo.Visible = false;   }   else   {    //如果页数为1,翻页的按钮不显示    if (1 == m_intPageCount)    {     labPageInfo.Text = "";     pbPage_Prev.Visible = false;     pbPage_Next.Visible = false;     pbPage_Begin.Visible = false;     pbPage_End.Visible = false;     txtPageInfo.Visible = false;    }    else    {     //只显示下一页和最后一页的按钮     if (m_intCurPageIndex <= 1)     {      m_intCurPageIndex = 1;      pbPage_Prev.Visible = false;      pbPage_Next.Visible = true;      pbPage_Begin.Visible = false;      pbPage_End.Visible = true;      txtPageInfo.Visible = false;     }     //只显示上一页和首页的按钮     else if (m_intCurPageIndex >= m_intPageCount)     {      m_intCurPageIndex = m_intPageCount;      pbPage_Prev.Visible = true;      pbPage_Next.Visible = false;      pbPage_Begin.Visible = true ;      pbPage_End.Visible = false;      txtPageInfo.Visible = false;     }      //否则按钮全部显示     else     {      pbPage_Prev.Visible = true;      pbPage_Next.Visible = true;      pbPage_Begin.Visible = true;      pbPage_End.Visible = true;      txtPageInfo.Visible = false;     }     labPageInfo.Text = String.Format("第{0}页 /共{1}页",m_intPageCount);     txtPageInfo.Text = String.Format("{0}",m_intCurPageIndex);    }   }  }  private voID timerAutopage_Tick(object sender,EventArgs e)  {   if ((m_blnIsNextDown && m_intCurPageIndex >= m_intPageCount) || (m_blnIsPrevDown && m_intCurPageIndex <= 1) || (m_blnIsEndDown && m_intCurPageIndex >=m_intPageCount) || (m_blnIsBeginDown && m_intCurPageIndex<=1))   {    leaveautoJumpMode();    return;   }   if (!m_blnIsautoJump) m_timerAutopage.Interval = autoJUMP_INV;   int intoldPage = m_intCurPageIndex;   if (m_blnIsNextDown) m_intCurPageIndex++;   if (m_blnIsPrevDown) m_intCurPageIndex--;   setStatus();   PageChanged(intoldPage,new EventArgs());   if ((m_blnIsNextDown && m_intCurPageIndex >= m_intPageCount) || (m_blnIsPrevDown && m_intCurPageIndex <= 1)||(m_blnIsEndDown && m_intCurPageIndex >= m_intPageCount) || (m_blnIsBeginDown && m_intCurPageIndex <= 1))   {    leaveautoJumpMode();   }   else   {    m_blnIsautoJump = true;   }  }  private voID leaveautoJumpMode()  {   m_blnIsautoJump = false;   m_timerAutopage.Stop();   m_timerAutopage.Enabled = false;   m_timerAutopage.Interval = WAIT_FOR_autoJUMP;  }  private int m_intCurPageIndex = 0;  //当前页面  public int CurPageIndex  {   get { return m_intCurPageIndex; }   set   {    if (value < 0 || (m_intPageCount> 0 && value > m_intPageCount)) return;    int intoldPage = m_intCurPageIndex;    m_intCurPageIndex = value;    setStatus();    if (!m_blnIgnoreChange) PageChanged(intoldPage,new EventArgs());    m_blnIsautoJump = false;    m_timerAutopage.Stop();    m_timerAutopage.Enabled = false;   }  }  //计算总页数  public int PageCount  {   get { return m_intPageCount; }   set    {     m_intPageCount = value;    if (m_intPageCount > 0)    {     if (m_intCurPageIndex <= 0) m_intCurPageIndex = 0;     if (m_intCurPageIndex > m_intPageCount)     {      m_intCurPageIndex = m_intPageCount;     }    }    else    {     m_intCurPageIndex = 0;    }    setStatus();   }  }  private Boolean m_blnIgnoreChange = false;  public Boolean IgnoreChange  {   get { return m_blnIgnoreChange; }   set { m_blnIgnoreChange = value; }  }  private Boolean m_blnShowLabel = true;  public Boolean ShowLabel  {   get { return m_blnShowLabel; }   set { m_blnShowLabel = value; labPageInfo.Visible = value; }  }  private voID txtPageInfo_TextChanged(object sender,EventArgs e)  {   if (m_blnIgnTextChange) return;   m_blnIgnTextChange = true;   inputTextChanged(sender,e);  }  private voID txtPageInfo_GotFocus(object sender,EventArgs e)  {   inputGotFocus(this,e);  }  private voID txtPageInfo_LostFocus(object sender,EventArgs e)  {   inputLostFocus(this,e);  }  private voID txtPageInfo_MouseDown(object sender,MouseEventArgs e)  {   inputMouseDown(sender,e);  }  private voID txtPageInfo_MouseUp(object sender,MouseEventArgs e)  {   inputMouseUp(sender,e);  }  private voID txtPageInfo_Click(object sender,EventArgs e)  {   inputTextClick(sender,e);  }  private voID txtPageInfo_KeyDown(object sender,KeyEventArgs e)  {   inputKeyDown(sender,e);  }  private voID txtPageInfo_KeyUp(object sender,KeyEventArgs e)  {   inputKeyUp(sender,e);  }  private voID txtPageInfo_KeyPress(object sender,KeyPressEventArgs e)  {   inputKeyPress(sender,e);  }  private string m_strText = "";  public String Text  {   get { return m_strText; }   set { m_strText = value; }  }  private System.windows.Forms.Timer m_timerAutopage = new Timer();  private bool m_blnIsPrevDown = false;  private bool m_blnIsNextDown = false;  private bool m_blnIsBeginDown = false;  private bool m_blnIsEndDown = false;  private bool m_blnIsautoJump = false;  public delegate voID PageChangedHandle(int oldPage,int newPage,EventArgs e);  public event PageChangedHandle PageChanged;  private const int WAIT_FOR_autoJUMP = 500;  private const int autoJUMP_INV = 500;  private int m_intPageCount = 0;  protected String m_strErrorText = "";  public String ErrorText  {   get { return m_strErrorText; }   set { m_strErrorText = value; }  }  /// <summary>  /// 键盘控件的父对象  /// </summary>  private Control m_keyboardParent = null;  public Control KeyboardParent  {   get { return m_keyboardParent; }   set { m_keyboardParent = value; }  }    /// <summary>  /// 是否显示输入翻页框按钮  /// </summary>  private Boolean m_blnShowTxtPageInfo = true;  public Boolean ShowTxtPageInfo  {   get { return m_blnShowTxtPageInfo; }   set { m_blnShowTxtPageInfo = value; txtPageInfo.Visible = value; }  }  //public bool IsPages { get; set; }  private bool m_blnIgnTextChange = false;  private Boolean m_blnIsinputFocus = false;    //public event EventHandler inputEnterpressed;  //public event EventHandler inputClearpressed;  public delegate voID inputFocusHandle(object sender,EventArgs e);  public event inputFocusHandle inputGotFocus;  public event inputFocusHandle inputLostFocus;  public delegate voID inputMouseHandle(object sender,MouseEventArgs e);  public event inputMouseHandle inputMouseDown;  public event inputMouseHandle inputMouseUp;  public event EventHandler inputTextClick;  public delegate voID inputKeyHandle(object sender,KeyEventArgs e);  public event inputKeyHandle inputKeyDown;  public event inputKeyHandle inputKeyUp;  //public event inputKeyHandle inputTextKeyBoardEnter;  public delegate voID inputKeyPressHandle(object sender,KeyPressEventArgs e);  public event inputKeyPressHandle inputKeyPress;  public event EventHandler inputTextChanged;    public TextBox inputTextBox  {   set { txtPageInfo=value; }   get { return txtPageInfo; }  }  public String inputText  {   get   {    if (m_strText == txtPageInfo.Text || String.IsNullOrWhiteSpace(txtPageInfo.Text))    {     return String.Empty;    }    else    {     return txtPageInfo.Text;    }   }   set   {    if (m_blnIsinputFocus)    {     txtPageInfo.Text = value;    }    else    {     if (String.IsNullOrWhiteSpace(value))     {      m_blnIgnTextChange = true;      txtPageInfo.Text = m_strText;      m_blnIgnTextChange = false;     }    }   }  }  public voID setinputText(String text)  {   txtPageInfo.Text = text;  } }}

3. 你在资源管文件里面创建的control 文件夹里面,创建了一个用户控件ucPageTurn ,那么在工具栏里面会自动显示你刚刚写的ucPageTurn组件,把它拖到页面上 ,将这个组件的名字叫做ucPages,这样ucpageturn里面的控件就可以进行编辑

//在initControls里面添加textBox输入框的事件 private voID initControls()   {  ucPages.inputTextBox.KeyPress +=new KeyPressEventHandler(ucPages_KeyPress);   ucPages.PageChanged += new Pku.CFM.Controls.ucPageTurn.PageChangedHandle(ucPages_PageChanged);} private voID ucPages_KeyPress(object sender,KeyPressEventArgs e)  {   if (13 == e.KeyChar)   {    int intReturn = Sysdefine.nothing;    String strinputText = ucPages.Text.toupper();    if (Sysdefine.Failed == intReturn)    {     MessageBox.Show(this.ErrorText,"信息",MessageBoxbuttons.OK,MessageBoxIcon.Warning);    }        String pageinputText = ucPages.inputText;    int page = 0;    try    {     page = int.Parse(pageinputText);    }    catch    {     page = 1;    }    ucPages.CurPageIndex = page;    if (Sysdefine.Failed == refreshList(page,strinputText))    {     MessageBox.Show(this.ErrorText,MessageBoxIcon.Warning);    }   }  } private voID ucPages_PageChanged(int oldPage,EventArgs e)  {   int intReturn = Sysdefine.nothing;   String strinputText = ucPages.Text.toupper();   intReturn = refreshList(newPage,strinputText);   if (Sysdefine.Failed == intReturn)   {    MessageBox.Show(this.ErrorText,MessageBoxIcon.Warning);    return;   }  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。

总结

以上是内存溢出为你收集整理的C# winform自定义翻页控件详解全部内容,希望文章能够帮你解决C# winform自定义翻页控件详解所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1254148.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存