Soyez le premier à donner votre avis sur cette source.
Vue 40 953 fois - Téléchargée 1 947 fois
Public Class MsgListBox 'Développé par mafieulemouton '--------------------------------------------------------------------------- Inherits System.Windows.Forms.Form Private reponseChoix As String Private fermetureValide As Boolean 'methode d'instanciation de la classe Private Sub New(ByVal listeDeChoix As Collections.Generic.List(Of String), Optional ByVal nomDeLaFenetre As String = "", Optional ByVal monIcone As System.Drawing.Icon = Nothing, Optional ByVal SelectionParDefaut As Integer = 0, Optional ByVal CancelButton As Boolean = False) 'si le boutton d'annulation est présent on peut fermer avec la croix meme sans rien selectionner If CancelButton = True Then If SelectionParDefaut = 0 Then reponseChoix = "" fermetureValide = True End If 'définition du formulaire Me.Width = 600 Me.Height = 160 Me.Icon = monIcone If monIcone Is Nothing Then Me.Icon = SystemIcons.Question Me.CenterToScreen() Me.FormBorderStyle = Windows.Forms.FormBorderStyle.FixedSingle Me.ShowInTaskbar = True Me.MinimizeBox = False Me.MaximizeBox = False Me.Text = nomDeLaFenetre 'empecher la fermeture de la fenetre AddHandler Me.FormClosing, AddressOf empecherLafermeture 'ajouter la listbox Dim _maListBox As New ListBox _maListBox.Width = 560 _maListBox.Height = 52 _maListBox.Top = 20 _maListBox.Left = 10 _maListBox.SelectionMode = SelectionMode.One For Each compteur As String In listeDeChoix _maListBox.Items.Add(compteur) Next If SelectionParDefaut > 0 And SelectionParDefaut <= listeDeChoix.Count Then 'gérer la selection d'un element par defaut _maListBox.SelectedIndex = SelectionParDefaut - 1 fermetureValide = True End If Me.Controls.Add(_maListBox) 'ajouter le boutton OK Dim _monBoutonOK As New Button With _monBoutonOK .Top = 80 .Left = 470 .Height = 28 .Text = "OK" End With Me.Controls.Add(_monBoutonOK) Me.AcceptButton = _monBoutonOK AddHandler _monBoutonOK.Click, AddressOf BoutonOk 'relier le code du bouton OK 'ajouter le boutton cancel If CancelButton = True Then Dim _monBoutonCancel As New Button With _monBoutonCancel .Top = 80 .Left = 370 .Height = 28 .Text = "CANCEL" End With Me.Controls.Add(_monBoutonCancel) Me.CancelButton = _monBoutonCancel AddHandler _monBoutonCancel.Click, AddressOf BoutonCancel 'relier le code du bouton CANCEL End If 'afficher le formulaire Me.ShowDialog() End Sub 'valide le formulaire et rend possible sa fermeture Private Sub BoutonOk() reponseChoix = CType(Me.Controls.Item(0), ListBox).SelectedItem If reponseChoix <> "" Then fermetureValide = True If CType(Me.Controls.Item(0), ListBox).SelectedItems.Count <> 0 Then Me.Close() End Sub 'valide le formulaire et rend possible sa fermeture Private Sub BoutonCancel() fermetureValide = True reponseChoix = "" Me.Close() End Sub 'empeche la fermeture si aucun choix n'a été fait Private Sub empecherLafermeture(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) If fermetureValide = False Then e.Cancel = True End Sub 'MODIFIER LA MANIERE DONT LE FORMULAIRE EST DESSINE 'Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs) ' MyBase.OnPaint(e) 'Appel à la méthode de la classe de base, ce qui dessine le bouton ' Dim myPen As New Pen(Color.Red, 5) ' e.Graphics.DrawRectangle(myPen, 3, 3, Me.Width - 25, Me.Height - 55) 'Ajoute un cadre sur le dessin du bouton 'End Sub 'METHODES D'AFFICHAGE Public Overloads Shared Function Show(ByVal listeDeChoix As Collections.Generic.List(Of String), Optional ByVal nomDeLaFenetre As String = "", Optional ByVal monIcone As System.Drawing.Icon = Nothing, Optional ByVal SelectionParDefaut As Integer = 0, Optional ByVal CancelButton As Boolean = False) As String Dim toto As New MsgListBox(listeDeChoix, nomDeLaFenetre, monIcone, SelectionParDefaut, CancelButton) Return toto.reponseChoix End Function Public Overloads Shared Function Show(ByVal nomDeLaFenetre As String, ByVal monIcone As System.Drawing.Icon, ByVal SelectionParDefaut As Integer, ByVal CancelButton As Boolean, ByVal ParamArray mesOptions() As String) As String Dim tempList As New Collections.Generic.List(Of String) For Each choix As String In mesOptions tempList.Add(choix) Next 'gérer la preselection: If SelectionParDefaut < 0 Or SelectionParDefaut > tempList.Count Then SelectionParDefaut = 0 End If Dim toto As New MsgListBox(tempList, nomDeLaFenetre, monIcone, SelectionParDefaut, CancelButton) Return toto.reponseChoix End Function End Class
21 avril 2014 à 13:28
20 janv. 2010 à 19:58
continue
20 janv. 2010 à 16:37
Pour le tableau je le fait déja, si tu regarde le code la méthode show() à une surcharge pour être utilisée avec un tableau de type Collections.Generic.List(Of String)
J'ai développé ce code parce que j'en avais besoin, et pour essayer d'apprendre à travailler avec les objets.
Renfied je note aussi tes observations.
Je ferais une update dès que j'aurais le temps
20 janv. 2010 à 07:43
et avoir des elements selectionnés par default, pourquoi pas.
peut etre avoir deux boutons (OK / Annuler) plutot que juste OK
20 janv. 2010 à 03:26
le paramarray n'existe plus en dotnet?....
(et même, un tableau?)
reste à voir l'utilité d'un tel code. avec généricité (pouvoir générer des checkboxes, des.. mélanges autres)
umm, pourquoi pas....
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.