自己写的一个分页控件(WinForm)

  找来找去没找个轻量级的分页控件,只好自己写一个凑合着先用。先看效果图:

    

  控件的功能很简单,点击控件的几个按钮、捕获 Item_Click 事件、触发 PageIndexChanging 事件。

因此、必须要向此控件注册 PageIndexChanging 事件,在这个事件中,PageIndexChangingEventArgs 会传递新选择页的索引,根据这个索引值(NewPageIndex)就可以从数据库查询对应页的数据。

  先初始化控件:

  

InitializingComponent
      public   void  InitializingComponent()
        {
            firtItem 
=   new  ToolStripButton();
            firtItem.Image 
=  CreateBitmap(FirstImage);
            firtItem.Name 
=   " PageNavigatorMoveFirstItem " ;
            firtItem.ToolTipText 
=  FirstTipText;

            previousItem 
=   new  ToolStripButton();
            previousItem.Image 
=  CreateBitmap(PreviousImage);
            previousItem.Name 
=   " PageNavigatorMovePreviousItem " ;
            previousItem.ToolTipText 
=  PreviousTipText;

            nextItem 
=   new  ToolStripButton();
            nextItem.Image 
=  CreateBitmap(NextImage);
            nextItem.Name 
=   " PageNavigatorMoveNextItem " ;
            nextItem.ToolTipText 
=  NextTipText;

            lastItem 
=   new  ToolStripButton();
            lastItem.Image 
=  CreateBitmap(LastImage);
            lastItem.Name 
=   " PageNavigatorMoveLastItem " ;
            lastItem.ToolTipText 
=  LastTipText;

            textItem 
=   new  ToolStripTextBox();
            textItem.Name 
=   " PageNavigatorTextItem " ;
            textItem.ToolTipText 
=  ToolTipText;
            textItem.Size 
=   new  Size( 45 20 );
            labelItemPrefix 
=   new  ToolStripLabel();
            labelItemPrefix.Text 
=   " / " ;
            labelItemPrefix.Name 
=   " PageNavigatorLabelPrefix " ;

            labelItem 
=   new  ToolStripLabel();
            labelItem.Text 
=   this .pageIndex.ToString();
            labelItem.Name 
=   " PageNavigatorLabelItem " ;
            labelItem.ToolTipText 
=  LabelTipText;

            labelItemEnd 
=   new  ToolStripLabel();
            labelItemEnd.Text 
=   "  页  " ;
            labelItemEnd.Name 
=   " PageNavigatorLabelEnd " ;

            queryItem 
=   new  ToolStripButton();
            queryItem.Image 
=  CreateBitmap(QueryImage);
            queryItem.Name 
=   " PageNavigatorQueryItem " ;
            queryItem.ToolTipText 
=  QueryTipText;

            
this .Items.AddRange( new  ToolStripItem[] { firtItem, previousItem, nextItem, lastItem, textItem, labelItemPrefix, labelItem, labelItemEnd, queryItem });
        }


 

  再看 Item_Click 事件:

  

OnItemClicked
protected   override   void  OnItemClicked(ToolStripItemClickedEventArgs e)
        {
            
base .OnItemClicked(e);

            
this .currentItem  =  e.ClickedItem;
            
switch  (e.ClickedItem.Name)
            {
                
case   " PageNavigatorMoveFirstItem " :
                    
if  (PageIndex  >   0 )
                    {
                        pageIndex 
=   0 ;
                    }
                    
break ;
                
case   " PageNavigatorMovePreviousItem " :
                    
if  (PageIndex  >   0 )
                    { pageIndex
-- ; }
                    
break ;
                
case   " PageNavigatorMoveLastItem " :
                    
if  (PageIndex  <  PageCount)
                    {
                        pageIndex 
=  PageCount  -   1 ;
                    }
                    
break ;
                
case   " PageNavigatorQueryItem " :
                    ToolStripTextBox txt 
=   this .Items[ " PageNavigatorTextItem " as  ToolStripTextBox;
                    
if  (txt  !=   null )
                    {
                        
if  ( ! ValidateInput(txt.Text.Trim()))
                        {
                            MessageBox.Show(
" 只能输入大于零的数字 " );
                            
return ;
                        }

                        
int  index  =   0 ;
                        
int .TryParse(txt.Text,  out  index);
                        index
-- ;

                        
if  ( 0   <=  index  &&  index  <  PageCount)
                        {
                            pageIndex 
=  index;
                        }
                        
else
                        { MessageBox.Show(
" 数字超出范围 " ); }
                    }
                    
break ;
                
default :
                    
if  (PageIndex  <  PageCount)
                    {
                        pageIndex
++ ;
                    }
                    
break ;
            }

            EnsureToolStripItemState(pageIndex);
       //触发 PageIndexChanging 事件
            PageIndexChangingEventArgs ee  =   new  PageIndexChangingEventArgs(pageIndex);
            OnPageIndexChanging(ee);
        }

  最后 PageIndexChanging 事件:

PageIndexChanging 事件

    
protected   virtual   void  OnPageIndexChanging(PageIndexChangingEventArgs e)
        {
            var handler 
=  Events[pageIndexChangingKey]  as  PageIndexChangingEventHandler;
            
if  (handler  !=   null )
            { handler(
this , e); }
        }


控件的主体程序就这么多。


 

 

 

 

转载于:https://www.cnblogs.com/FrankYao/archive/2010/08/20/1804560.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值