2010-03-31 2 views
6

Salut J'ai besoin d'émuler un volet de tâches en faisant flotter un formulaire non modal sur la fenêtre principale d'Excel. La raison de cette exigence est que j'ai besoin d'avoir des fonctionnalités taskpane pour mon complément Excel , mais je ne peux pas utiliser le modèle centré sur le document. Quelqu'un peut-il suggérer quelle serait la meilleure façon de faire cela? La forme non modale doit détecter l'événement de redimensionnement de la fenêtre principale et se redimensionner en conséquence, et doit également se positionner toujours au bas de la fenêtre (un peu comme une fenêtre d'ancrage).Besoin de placer un formulaire modeless flottant sur la fenêtre principale d'Excel (volet quasi-tâche)

Répondre

0

Je vais partager ce que j'ai trouvé jusqu'ici. Un article dans Code Project était très instructif, je pense que cela m'aidera à comprendre ce que je dois faire à long terme, bien qu'il s'agisse de l'intégration des panneaux Outlook. Je n'ai pas eu le temps d'essayer vraiment et d'intégrer la solution décrite ci-dessous dans mon projet Excel, mais l'idée décrite dans l'article semble solide.

http://www.codeproject.com/KB/office/additional_panel_Outlook.aspx

Je vais mettre à jour mon post une fois que je reçois plus d'informations.

1

Peut-être que je n'ai pas compris la question, mais il semble que si vous définissez simplement la propriété ShowModal du formulaire sur False, vous obtiendrez ce que vous voulez.

1

Je préfère this method which is simple and straight forward:

Voici comment j'implémenté (en VB):

Public Class WindowWrapper 

    Implements System.Windows.Forms.IWin32Window 

    Private _hwnd As IntPtr 

    Public Sub New(ByVal handle As IntPtr) 
     _hwnd = handle 
    End Sub 

    Public ReadOnly Property Handle() As IntPtr Implements System.Windows.Forms.IWin32Window.Handle 
     Get 
      Return _hwnd 
     End Get 
    End Property 

End Class 

Dim owner As New WindowWrapper(CType(gXLApp.Hwnd, IntPtr)) 
gfTimeStamp = New FTimeStamp 
gfTimeStamp.Show(owner) 

a très bien!

Questions connexes