2010-04-10 9 views
6

Robię excel dodatek, w którym klikając na przycisk menu lub przycisk paska narzędzi, formularz otwarty. Ustawiłem najwyższą formę na true, ale pozostaje ona najlepsza dla wszystkich aplikacji Windows XP. Po prostu muszę pozostać na samym szczycie tylko Microsoft Excel.Jak ustawić formę do samej tylko aplikacji?

Wybrałem projekt w Visual Studio 2008, w programie Excel -> 2003.

Proszę mi powiedzieć, jak to zrobić w dowolny sposób ........

Odpowiedz

9

Można ustawić właściciela formularza, aby być Microsoft Excel okno. W systemie Windows owned windows są zawsze wyświetlane powyżej ich właściciela. Okna dialogowe i rzeczy, takie jak pole wyszukiwania w programie Excel, są własnością systemu Windows, co zapewnia wyświetlanie ich nad właścicielem.

Istnieje kilka sposobów, które można wybierać z rodziców formą jest:

  1. Właściwość Form.Owner (choć właściciel musi być inna forma)
  2. użyć przeciążenie Form.Show(IWin32Window owner). (Zobacz, jak przetłumaczyć uchwyt okna na IWin32Window).
  3. Użyj parametru SetWindowLong() za pomocą parametru GWLP_HWNDPARENT.
  4. Użyj ShowDialog(), jak zasugerował Mikael Svenson.

Wymaga to znajomości uchwytu okna aplikacji Excel.

+0

Dobre udostępnianie. Twoja druga droga wreszcie rozwiązała mój problem. –

+0

Dzięki za odpowiedź ... –

1

[Edit - zmienił code]

[DllImport("user32.dll", SetLastError = true)] 
static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent); 

void func() 
{ 
    Form1 f = new Form1(); 
    SetParent(f.Handle, (IntPtr)ThisAddIn.ExcelApplication.Hwnd); 
    f.Show(); 
} 
+0

Ale muszę pracować na arkuszu programu Excel, gdy okno dialogowe jest otwarte. –

+0

Zmieniono mój kod, aby użyć ustawienia rodzica okna. –

Powiązane problemy