http://hi.csdn.net/space-6584286-do-album-picid-698498.html
实现效果如图片或是链接里的图片:
     现在有个用户控件,这个控件由两个picturebox,一个checkbox,一个label组成,用户控件已经定义好了
     在Form1里有个listbox或是listview控件以及一个add按钮,代码如下:
      private void btnAdd_Click(object sender,EventArgs e)
      {
            UserControl uc=new UserControl();
            ---------------------//中间是些属性代码
            this.listbox.controls.add(uc);
      }
     然后我想要的效果是,在Form里效果中单击图片或是双击图片(图片是用户控件里的)要弹出另外一个界面出来,请问这个功能该怎么实现呢?
    麻烦各位大虾看看!!!!

解决方案 »

  1.   

    自定义一个事件,就可以了!
    给你一个例子/// <summary>
        /// 自定义分页控件
        /// 作者:hch126163
        /// 时间:2009-9-25
        /// </summary>
        public partial class WinformPager : UserControl
        {        private int _pageIndex = 1; //当前的页索引
            private int _pageCount = 0; // 总页数
            private int _pageSize = 20; // 每页多少行 
            private int _rowCount = 0;  //  总记录数
            public delegate void PageIndexChangeEventHandler(object sender, PageIndexChangeEventArgs e);        /// <summary>
            /// 当前页索引改变时,触发
            /// </summary>
            [Description("页索引发生改变后触发")] //显示在属性设计视图中的描述
            public event PageIndexChangeEventHandler PageIndexChange;         /// <summary>
            /// 触发当前页索引改变事件
           /// </summary>
           /// <param name="e"></param>
            protected virtual void OnPageIndexChange(PageIndexChangeEventArgs e) 
            {
                ButtonState();
                if (PageIndexChange!=null)        // 如果有此事件
                {
                     PageIndexChange(this, e);
                }
            }        /// <summary>
            /// 当前的页索引(最小值1 最大值pageCount,要设置pageIndex值,请先设置PageSize 和 RowCount)
            /// </summary>
            [Description("获取或设置当前的页索引 从1开始 默认是1第一页 要改变此值,请先设置每页多少行PageSize和总记录数RowCount")] //显示在属性设计视图中的描述
            [DefaultValue(typeof(int), "1")]//给予初始值
            public int PageIndex
            {
                get { return _pageIndex; }
                set { 
                    if(value <1 )
                    {
                        _pageIndex = 1;
                        return;
                    }
                    if (_pageCount > 0 && value > _pageCount)
                    {
                        _pageIndex = _pageCount;
                        return;
                    }
                    _pageIndex = value; 
                
                }
            }
            /// <summary>
            /// 总页数(只读 最小值0)
            /// </summary>
            [Description("获取总页数")] //显示在属性设计视图中的描述
            [DefaultValue(typeof(int), "0")]//给予初始值
            public int PageCount
            {
                get { return _pageCount; }
              
            }
           
            /// <summary>
            /// 每页多少行 (最小值1 默认值20)
            /// </summary>
            [Description("获取或设置每页显示多少行数据")] //显示在属性设计视图中的描述
            [DefaultValue(typeof(int), "20")]//给予初始值
            public int PageSize
            {
                get { return _pageSize; }
                set {
                    if (value < 1)
                    {
                        _pageSize = 1;
                        return;
                    }
                    _pageSize = value;
                    SetPageCount();
                }
            }
         
            /// <summary>
            /// 总记录数(最小值0)
            /// </summary>
            [Description("获取或设置总记录数")] //显示在属性设计视图中的描述
            [DefaultValue(typeof(int), "0")]//给予初始值
            public int RowCount
            {
                get { return _rowCount; }
                set 
                {
                    if (value<0)
                    {
                        _rowCount = 0;
                        return;
                    }
                    _rowCount = value;
                    SetPageCount();
                }
            }        public WinformPager()
            {
                InitializeComponent();
            }        /// <summary>
            /// 计算共多少页
            /// </summary>
            private void SetPageCount() 
            {
                _pageCount = (int)(Math.Ceiling(_rowCount / (double)_pageSize));            ButtonState();
            }
            /// <summary>
            /// 首页
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void btnFirst_Click(object sender, EventArgs e)
            {            _pageIndex = 1;            OnPageIndexChange(new PageIndexChangeEventArgs(_pageIndex));
            }
            /// <summary>
            /// 上一页
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void btnPrevious_Click(object sender, EventArgs e)
            {
                if (_pageIndex > 1)
                {
                    _pageIndex--;                OnPageIndexChange(new PageIndexChangeEventArgs(_pageIndex));
                }
            }
            /// <summary>
            /// 下一页
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void btnNext_Click(object sender, EventArgs e)
            {
                if (_pageIndex < _pageCount)
                {
                    _pageIndex++;                OnPageIndexChange(new PageIndexChangeEventArgs(_pageIndex));
                }
            }
            /// <summary>
            /// 尾页
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void btnLast_Click(object sender, EventArgs e)
            {
                _pageIndex = _pageCount;
                OnPageIndexChange(new PageIndexChangeEventArgs(_pageIndex));        }
            /// <summary>
            /// 跳转页面
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void cmpJumpPage_SelectedIndexChanged(object sender, EventArgs e)
            {
                if (_pageIndex == cmpJumpPage.SelectedIndex + 1 || cmpJumpPage.Text == "")
                {
                    return;
                }
                _pageIndex = cmpJumpPage.SelectedIndex + 1;
                OnPageIndexChange(new PageIndexChangeEventArgs(_pageIndex));        }        /// <summary>
            /// 按钮状态
            /// </summary>
            private void ButtonState()
            {
                if (_rowCount == 0)
                {
                    this.btnFirst.Enabled = false;
                    this.btnPrevious.Enabled = false;                this.btnNext.Enabled = false;
                    this.btnLast.Enabled = false;
                    this.cmpJumpPage.Enabled = false;
                    this.cmpJumpPage.Items.Clear();
                    this.cmpJumpPage.Text = "";
                    this.lblMessage.Text = "没有搜到相关数据!";
                   
                    return;
                }
               
                this.btnFirst.Enabled = true;
                this.btnPrevious.Enabled = true;
                this.btnNext.Enabled = true;
                this.btnLast.Enabled = true;
                this.cmpJumpPage.Enabled = true;
                if (_pageIndex == 1)
                {
                    this.btnFirst.Enabled = false;
                    this.btnPrevious.Enabled = false;
                }
                if (_pageIndex == _pageCount)
                {
                    this.btnNext.Enabled = false;
                    this.btnLast.Enabled = false;
                }
                cmpJumpPage.Items.Clear();
                for (int i = 1; i <= _pageCount; i++)
                {
                    cmpJumpPage.Items.Add(i);            }
                if (_pageCount > 0)
                    cmpJumpPage.SelectedIndex = _pageIndex - 1;            this.lblMessage.Text = "共搜到" + _rowCount + "条数据  共" + _pageCount + "页  第" + this._pageIndex + "页";
            }       
        }    /// <summary>
        /// PageIndexChange事件参数类
        /// </summary>
        public class PageIndexChangeEventArgs : System.EventArgs 
        {          public PageIndexChangeEventArgs( int newPageIndex) 
               {
                   _newPageIndex = newPageIndex; 
                 
               }           private int _newPageIndex;           public int NewPageIndex
               {
                   get { return _newPageIndex; }
                  
               }      }