小编Gus*_*oso的帖子

从每个组件捕获鼠标事件

我的WinForm C#应用程序上的MouseEvents有问题.

我想在我的应用程序上点击所有鼠标,但我不想在每个子组件中都放置一个监听器,也不要使用Windows鼠标钩子.

在Flash上​​我可以在Stage上放置一个监听器来获取电影上的所有MouseEvent.

C#上有这样的东西吗?全局MouseListener?


编辑:

我从IMessageFilter ans使用Application.AddMessageFilter创建了这个类.

public class GlobalMouseHandler : IMessageFilter{

    private const int WM_LBUTTONDOWN = 0x201;

    public bool PreFilterMessage(ref Message m){
        if (m.Msg == WM_LBUTTONDOWN) {
            // Do stuffs
        }
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

并将此代码放在需要监听全局点击的控件上:

GlobalMouseHandler globalClick = new GlobalMouseHandler();
Application.AddMessageFilter(globalClick);
Run Code Online (Sandbox Code Playgroud)

c# mouseevent winforms

30
推荐指数
2
解决办法
3万
查看次数

什么是更好的?子查询或内部连接十个表?

一个旧系统已经到我们办公室进行一些更改和修复,但它也遇到了性能问题.我们不确切知道这种缓慢的根源是什么.

当我们重构旧代码时,我们发现了几个带有以下模式的sql查询(为了示例目的,查询被简化):

SELECT
   (
    SELECT X
    FROM A
    WHERE A.id = TABLE.id
   ) AS COLUMN1,
    (
    SELECT Y
    FROM B
    WHERE B.id = TABLE.id
   ) AS COLUMN1,
   (
    SELECT Z
    FROM C
    WHERE C.id = TABLE.id
   ) AS COLUMN1,
   ...
FROM
    TABLE
WHERE
    TABLE.id = @param;
Run Code Online (Sandbox Code Playgroud)

这些查询从它们返回的每个列执行几个内部子查询.

我们计划在以下模式上重写这些查询:

SELECT
    A.X, B.Y, C.Z
FROM
    TABLE
    INNER JOIN A on A.ID = TABLE.ID
    INNER JOIN B on B.ID = TABLE.ID
    INNER JOIN C on C.ID = TABLE.ID
WHERE
    TABLE.id = …
Run Code Online (Sandbox Code Playgroud)

sql oracle select

14
推荐指数
2
解决办法
2万
查看次数

标签 统计

c# ×1

mouseevent ×1

oracle ×1

select ×1

sql ×1

winforms ×1