winform中调用自定义控件的事件比如鼠标单击事件等 急急

hgyin212314 2010-12-07 09:14:23

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里效果中单击图片或是双击图片(图片是用户控件里的)要弹出另外一个界面出来,请问这个功能该怎么实现呢?
麻烦各位大虾看看!!!!
...全文
1032 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
hch126163 2010-12-07
  • 打赏
  • 举报
回复
自定义一个事件,就可以了!
给你一个例子

/// <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; }

}

}


Net_Javaee 2010-12-07
  • 打赏
  • 举报
回复
、。,、,无为、我有心无力呀。,
hgyin212314 2010-12-07
  • 打赏
  • 举报
回复
补充下,应该是如何写事件处理,谢谢!!!

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧