CF TreeView - выбранный элемент, когда элемент управления теряет фокус - PullRequest
0 голосов
/ 18 мая 2010

Я знаю, что свойство "HideSelection" отсутствует в CF. Но мне все еще нужно разобраться с ситуацией, когда выбран элемент, который остается выделенным (серым), даже когда элемент управления теряет фокус.

Я пытался использовать этот код, но безуспешно. Я получаю исключение в методе 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 Ответ

2 голосов
/ 18 мая 2010

Windows CE использует coredll.dll вместо user32.dll .

Некоторые функции одинаковы на обеих платформах, а некоторые не реализованы для Compact Framework. Я обычно проверяю http://www.pinvoke.net для деклараций.

...