2009-11-14 4 views
0

Je souhaite créer un contrôle qui est fondamentalement un ListBox, mais chaque ListItem est une collection de contrôles. Chaque élément de cette zone de liste est donc une combinaison d'un Label, un CheckBox, un Timer et un TextBox.Création d'un contrôle personnalisé .NET

Cela peut-il être fait avec le framework .NET?

Si oui, avez-vous des recommandations sur la façon de commencer, des liens vers des exemples ou des discussions, ou des exemples open-source?

+0

@Pradeep: J'ai supposé WinForms en raison de votre mention d'un temporisateur. S'il vous plaît modifier pour plus de clarté si incorrect. –

Répondre

0

C'est très facile dans WPF - donc oui, c'est possible dans .NET Framework. (vous avez des contrôles dans WPF qui peuvent contenir d'autres contrôles comme un panneau qui peut avoir une case à cocher et une zone de texte, je ne suis pas sûr s'il y a un contrôle de minuterie, mais je suis sûr qu'il peut être programmé). Dans Winforms, c'est plus difficile, il peut être plus facile d'utiliser une grille et une grille plutôt qu'une liste, mais il y a du travail à faire.

Il existe des commandes commerciales - qui rendront ces fonctionnalités plus faciles à réaliser. (DevExpress Grid pour winforms)

+0

@Dani Merci pour votre réponse. En fait, j'ai une liste de périphériques qui doivent être placés dans la liste, maintenant cette liste peut se développer à tout point de sorte que j'ai besoin d'une barre de défilement. Il n'y a pas de barre de défilement dans le panneau, la boîte de groupe ou d'autres contrôles de conteneur. – Pradeep

+0

Il existe un moyen d'ajouter une barre de défilement à WPF. le contrôle de défilement devrait contenir le panneau si je me souviens bien. WPF est une option? – Dani

1

Comme le dit Dani, c'est très facile dans WPF. Pour vous donner une idée de sa simplicité, voici comment le faire en utilisant l'outil de conception Expression Blend ou en utilisant du code:

Si vous faites simplement glisser une ListBox sur une fenêtre WPF ou UserControl, dans la fenêtre Propriétés À la propriété ItemTemplate sélectionnez «Nouveau modèle», vous obtiendrez un ListBox avec un modèle personnalisé. Créez un panneau (tel que DockPanel) à l'intérieur de votre modèle et faites-y glisser des Labels, des CheckBoxes, des TextBoxes et d'autres contrôles.

En suivant cette procédure, le concepteur crée XAML similaire à ce qui suit:

<ListBox ItemsSource="{Binding myItems}"> 

    <ListBox.ItemTemplate> 
    <DataTemplate TargetType="{x:Type MyItemType}"> 

     <DockPanel> 

     <Label Content="Hello:"/> 
     <CheckBox Content="Click Here" /> 
     <TextBox Text="Here is my text" /> 

     </DockPanel> 

    </DataTemplate> 

    </ListBox.ItemTemplate> 
</ListBox> 

Sinon, vous pouvez simplement écrire le XAML vous. C'est incroyable comme il est facile de le faire avec IntelliSense.

1

si WPF est pas une option, vous pouvez utiliser un contrôle DataGridView avec: DataGridViewCheckBoxColumn pour votre case à cocher et 2 DataGridViewTextBoxColumn est pour l'étiquette et TextBox. Vous pouvez définir la propriété SelectionMode de la grille sur FullRowSelect pour sélectionner la ligne entière. Vérifiez également l'événement CellPainting de la grille; Vous pouvez y ajouter du code de peinture personnalisé.

Questions connexes