为了账号安全,请及时绑定邮箱和手机立即绑定

我new了一个NotifyIcon对象,在通知区域显示如下:

我new了一个NotifyIcon对象,在通知区域显示如下:

慕姐4208626 2022-05-19 16:15:28
当单击时候需要触发一个带参数的事件,//butSuspendAll是Form1中的一个按钮,dgvSoft是Form1中的DataGridViewprivate void butSuspendAll_Click(object sender, EventArgs e){obj.DoubleClick += new EventHandler(aa_Click(sender,e,i);//这里加入参数就会报错}private void aa_Click(object sender, EventArgs e,int i){Process p = new Process();p.StartInfo.FileName = @dgvSoft.Rows[i].Cells[6].Value.ToString();p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;p.Start();}-----------------------上边图片是具体代码
查看完整描述

3 回答

?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

obj.DoubleClick += new EventHandler(aa_Click(sender,e,i);//这里加入参数就会报错
这里你要注册NotifyIcon 对象的双击事件, new EventHandler(aa_Click); 这里只能传方法名,不能传参数进去。
还有EventHandler只支持两个参数(object sender, EventArgs e)
所以
private void aa_Click(object sender, EventArgs e,int i)
{
Process p = new Process();
p.StartInfo.FileName = @dgvSoft.Rows[i].Cells[6].Value.ToString();
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;p.Start();
}
这个方法的,int i参数必须去掉。
其实我想到个方法,你不需要传这个参数的
你可以把这个参数保存到NotifyIcon 对象的Tag中
触发 aa_Click事件时,你可以从 NotifyIcon a =(NotifyIcon )sender;
int i = Convert.ToInt32(a.Tag);
这样一样可以取到的

查看完整回答
反对 回复 2022-05-23
?
炎炎设计

TA贡献1808条经验 获得超4个赞

因为EventHander 这个委托接受的类似fun(object sender,Eventargs e)这样形式的函数名,如果你有其他参数传入,建议自己写一个MyEventArgs继承EventArgs,里面加一个你需要的参数的成员变量,然后拿用就可以了。

查看完整回答
反对 回复 2022-05-23
?
慕妹3242003

TA贡献1824条经验 获得超6个赞

把aa_click里的内容封装成一个函数,然后aa_click里调用,doublecilck里调用不就可以了

查看完整回答
反对 回复 2022-05-23
  • 3 回答
  • 0 关注
  • 197 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信