Voici une boite de dialogue (qui fonctionne à peu près comme le InputBox classique, sauf le retour de la saisie) que l'on peut personnaliser. D'après la source en C# :
www.codeproject.com/KB/edit/InputBox.aspx
Convertie via :
www.developerfusion.com/tools/convert/csharp-to-vb
Dans le InputBox classique, le seul moyen (à ma connaissance) de savoir si on a cliqué sur Annuler est de voir si la chaîne de retour est vide, tandis qu'ici, on distingue les 2 cas.
J'ai fait un exemple de personnalisation de la boite de dialogue par le choix supplémentaire d'un type quelconque à effectuer (type 1 ou type 2 par exemple).
Source / Exemple :
Cf. Zip.
Conclusion :
Le 1er problème, c'est que, comme avec la source d'origine en C#, les contrôles sont créés dynamiquement, on ne les voit pas dans le désigneur de Visual Studio, ce qui n'est pas pratique (on est obligé de créer des contrôles à part dans une feuille puis de copier/coller le code source, et il faut ajuster la position des contrôles).
Le second problème, c'est que du coup, pour faire une personnalisation du code, c'est plus simple de dupliquer le code source. L'idéal serait de faire un héritage en POO pour ne modifier que ce qui est nécessaire (mais ce n'est pas sûr que cela en vaille le coup pour un code aussi simple) : si quelqu'un a une meilleure solution que la mienne, je suis preneur (j'ai du aller vite sur cette source ; je pense qu'il devrait être possible de partir d'une feuille normale, avec quand même un appel depuis un shared sub, ou sinon tant pis pour le shared sub, un new InputBoxPerso fera l'affaire à l'usage ; repartir de zéro serait le plus simple ?).
14 sept. 2009 à 16:17
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class toto
Inherits System.Windows.Forms.UserControl
Friend WithEvents WebBrowser1 As System.Windows.Forms.WebBrowser
'Requise par le Concepteur Windows Form
Private components As System.ComponentModel.IContainer
'Form remplace la méthode Dispose pour nettoyer la liste des composants.
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.WebBrowser1 = New System.Windows.Forms.WebBrowser
Me.SuspendLayout()
'
'WebBrowser1
'
Me.WebBrowser1.Dock = System.Windows.Forms.DockStyle.Fill
Me.WebBrowser1.Location = New System.Drawing.Point(0, 0)
Me.WebBrowser1.MinimumSize = New System.Drawing.Size(20, 20)
Me.WebBrowser1.Name = "WebBrowser1"
Me.WebBrowser1.Size = New System.Drawing.Size(284, 264)
Me.WebBrowser1.TabIndex = 0
'
'toto
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.Controls.Add(Me.WebBrowser1)
Me.Name = "toto"
Me.Size = New System.Drawing.Size(284, 264)
Me.ResumeLayout(False)
End Sub
End Class
Public Class toto
Sub New()
InitializeComponent()
WebBrowser1.Navigate("http://bt.my.yahoo.com/")
End Sub
End Class
14 sept. 2009 à 11:48
www.codeproject.com/KB/vista/Vista_TaskDialog_Wrapper.aspx
4 mai 2009 à 17:58
A+
4 mai 2009 à 09:59
4 mai 2009 à 09:29
- En tout cas merci, c'est le genre d'objet qu'on remet toujours à plus tard, comme la configuration. Je regrettais mon impasse et je peux tourner la page.
Merci encore.
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.