CF TreeView - 当控件失去焦点时选择的项目

时间:2010-05-18 10:22:33

标签: compact-framework treeview

我知道CF中缺少“HideSelection”属性。 但是,当选择一个项目时,即使控件失去焦点,我仍然需要处理它仍处于选中状态(灰色)的情况。

我尝试过使用这种代码安静,但没有成功。我在GetFocus()方法中遇到异常,我不知道我做错了什么。

非常感谢任何帮助!

[DllImport("User32.dll")]
    static extern IntPtr GetFocus();
    [DllImport("User32.dll")]
    static extern Int32 GetWindowLong(IntPtr hwnd, Int32 integer1);
    [DllImport("User32.dll")]
    static extern IntPtr SetWindowLong(IntPtr hwnd, Int32 integer1, int integer2);

    private bool doneOnce;
    protected override void OnGotFocus(System.EventArgs e)
    {
        base.OnGotFocus(e);
        if (this.itemsTreeView != null)
        {
            this.itemsTreeView.Focus();
            if (doneOnce == false)
            {
                doneOnce = true;
                IntPtr hWnd = GetFocus();
                Int32 lS = GetWindowLong(hWnd, -16);
                lS = lS | 0x20;
                SetWindowLong(hWnd, -16, lS);
            }
        }
    }

我已将此代码放在我的“代码隐藏”视图中,该视图包含TreeView控件。

1 个答案:

答案 0 :(得分:2)

Windows CE使用 coredll.dll 而不是 user32.dll

某些功能在两个平台上都是相同的,而有些功能并未在Compact Framework中实现。我通常会检查http://www.pinvoke.net是否有声明。