c#如何监听一个方法是否被调用

2025-05-06 11:01:55
推荐回答(3个)
回答1:

很简单 Observer模式就能满足你 嘎嘎嘎 , 你去百度上搜一下 观察者模式,核心就是委托与事件 就提示到这了 !

回答2:

private void StartCapture() {
if (m_frmCapture == null || m_frmCapture.IsDisposed)
m_frmCapture = new FrmCapture();
m_frmCapture.IsCaptureCursor = checkBox_CaptureCursor.Checked;
//当快捷键组合被按下的的时候,将dll中的m_frmCapture调出来,然后等待事件
//imageProcessBox1_DoubleClick的发生,
m_frmCapture.Show();
//我在这里怎么监听imageProcessBox1_DoubleClick的发生?并取到返回值?
}

楼上两位的说法,均对于楼主您的内容是无效的
首先我不知道您在说的是什么内容,但是您似乎是要求操作的顺序是按照您的预想中一致

那么您才会说出上面的哪行所谓的我在这里怎么监听

其实到了您这里
您的做法在软件工程中已经不叫做监听了
而叫做等待事件
所以楼上两位的回答均是无用的

所谓事件,观察者模式
均都是对事件,委托的另外一种描述而已,跟您的内容也是没有任何关系的

OK
首先
不要呗楼上两位所蒙蔽.
然后再来看我给您回答

你的做法类似我前阵子做的一个东西
我在做一个XNA游戏
里面有一个连招.也就是所谓的末压技
我监听的事件为
A招数放出如果他在结尾无任何特殊内容出现按出B招数C招数的出招方式,那么该末压技将会被释放

OK

其实我这里需要的内容与您的内容是一模一样的

这里已经不能使用所谓的监听了

为什么呢.因为监听的话即使监听到了鼠标双击
您无法确定他的发生时间戳
您总不能给我自己打上一个时间戳吧?
所以呢
我废话了这么多其实为了让你理解..您要使用的是事件等待.而非监听
改一下您的思路与代码
如果您不理解我的思路
就在仔细阅读我上述的内容以及想法
然后再往下看

m_frmCapture.Show();
//我在这里怎么监听imageProcessBox1_DoubleClick的发生?并取到返回值?
}

这个方法
记住,用异步
然后呢
//我在这里怎么监听imageProcessBox1_DoubleClick的发生?并取到返回值?
把这个线程堵住,也就是所谓的
While(true)
{
//这里的内容为,用户按键,查看是否是双击,如果不是,继续等待
}

这样你就把这个线程给堵上了
堵上以后直到是双击就给他跳出循环
你要拿到的操作就OK;额

如果让我给你把伪代码补全.那么就成了
While(true)
{
if(是否是双击)
{
//用户点击的是双击,那么执行你的快捷键内容吧
}
else
{
//什么都不做或者提示用户你的快捷键按错啦!或者继续下一次循环直到用户按了双击鼠标
//其实这里一般都是提示用户..因为快捷键是一次性的,嘛
}
}
好啦...我连游戏出招都用这思路做了..你一个快捷键...
如果有啥不懂的就继续追问

100分..诱惑不小哦

回答3:

再定义一个有返回值的事件.注册,监听就可以了.