2009-04-23 8 views
1

J'essaie d'utiliser le contrôle System.Windows.Forms.MonthCalendar dans un classeur VSTO Excel. Je veux que le MonthCalendar apparaisse lorsque je clique sur un bouton dans le ruban, mais jusqu'à présent, je ne peux pas afficher le contrôle du tout.Création d'un calendrier contextuel dans un projet Excel VSTO

Private Sub DeliveryDateFromCalendarButton_Click(ByVal sender As System.Object, ByVal e As Microsoft.Office.Tools.Ribbon.RibbonControlEventArgs) Handles DeliveryDateFromCalendarButton.Click 
    Dim selectedFiscalYear As String = Me.FiscalYearDropDown.SelectedItem.Label 
    Dim cal As System.Windows.Forms.MonthCalendar = New System.Windows.Forms.MonthCalendar() 

    cal.Location = New System.Drawing.Point(Cursor.Position.X, Cursor.Position.Y) 
    cal.Show() 
End Sub 

Le calendrier devrait apparaître à l'endroit où ils ont cliqué, mais hélas, il échoue.

Répondre

1

J'ai fini par créer un nouveau System.Windows.Form et ajouter mon calendrier à sa collection Controls.

Pas idéal, donc je suis toujours à la recherche d'une solution, mais au moins, ça me fait un calendrier pop-up.

+0

Avez-vous le code que vous avez utilisé pour faire ceci? – Phil

+1

Je pense qu'il veut dire qu'il a fini par juste avoir un bouton qui a fait un Form.Show et avait le calendrier là-dessus, par opposition à directement à partir du ruban qui est possible je crois. –

+0

C'est correct, @AnonymousType –

2

Je suis sûr que vous avez besoin d'un formulaire pour héberger un contrôle winforms. Si votre objectif était d'avoir "juste" le contrôle de calendrier apparaître seul, quelle serait la fenêtre parent? Si vous voulez que l'apparence d'un simple contrôle de calendrier soit assez facile, modifiez simplement les propriétés de l'interface utilisateur du formulaire afin qu'il ne contienne aucune bordure visible, modale, etc, si vous réécrivez dans WPF puis votre formulaire ne doit même pas ressembler à une forme (c.-à-d. carré etc.)

Questions connexes