每个程序员都是创造者--诚实做人,踏实做事,快乐生活

信言不美,美言不信。善者不辩,辩者不善。知者不博,博者不知。

导航

自己写的一个分页控件(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(4520);
            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); }
        }


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


 

 

 

 

posted on 2010-08-20 14:38  HUHU慈悲  阅读(886)  评论(0编辑  收藏  举报