2010-05-18 3 views
0

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

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

ответ

2

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

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

+0

thanx alot! Работает как шарм. Ты мужчина :) – no9