Benutzer mit den meisten Antworten
Usercontrol Instanzname als Text

Frage
-
Antworten
-
Hi,
Ich weiß nicht, ob ich das Problem richtig verstehe. Meinst du den Text, der bei "Name" steht, also z.B. wenn man 5 Textboxen erstellt in einer Form, dass diese TextBox1 bis TextBox5 heißen?
Wenn nicht Name, sondern wirklich Text (was natürlich nur bei text-enthaltenden Objekten wie einem Label, einer Textbox oder Artverwandten Sinn ergibt), wäre es doch ein Leichtes, den einfach im Konstruktor vorzubelegen (Sub New), und z.B. die On-Paint zu überschreiben (Protected Overrides OnPaint(...)) und den dort sogar noch anzuzeigen (im Designer).
Aber mir ist nicht ganz klar, ob es um den Namen oder einen Text geht.
Nur mal so fix zum Testen gecoded:
Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load End Sub End Class Public Class TestControl Inherits Control Public Sub New() Me.Text = Me.Name End Sub Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs) MyBase.OnPaint(e) With e.Graphics Dim TSize As SizeF = .MeasureString(Me.Text, Me.Font) .DrawString(Me.Text, Me.Font, New SolidBrush(Color.Black), New Point((Me.Width - TSize.Width) / 2, (Me.Height - TSize.Height) / 2)) End With End Sub End Class
Einfach mal so in nen leeres Projekt reinkopieren, erstellen, beenden und dann im Designer das Testcontrol einfügen in die Form. Ist es das, was du meintest?
LG, Dennis.- Als Antwort markiert Mac Bath Freitag, 24. August 2012 12:45
Alle Antworten
-
Hi,
ehrlich gesagt hab ich nicht verstanden, was Du meinst. Kannst Du das bitte etwas detaillierter formulieren?
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Also wenn ich in Visual Studio ein neues Label einfüge, dann wird dieses ja benannt mit Label1, Label2, usw.
Dies geschiet auch mit einem eingefügten usercontrol.
Beim Label wird zusätzlich die Property Text standardmäßig mit Label1, Label2, usw. gefüllt.
Und das ist das was ich mit meinem Steuerelement erreichen möchte, dass bei meinem usercontrol die Textproperty mit dem Namen des usercontrols gefüllt wird.
-
Hallo
Benutzersteuerelemente sind Container (wie z. B. ein Panel).
Und da sie mit der Text-Eigenschaft nichts anfangen können ist sie ausgeblendet.
Deswegen steht die Frage: Wozu soll das überhaupt gut sein?(Und um es zu ändern, müsstest Du einen eigenen UserControlDesigner stricken).
Gruß Elmar
-
Hi,
Ich weiß nicht, ob ich das Problem richtig verstehe. Meinst du den Text, der bei "Name" steht, also z.B. wenn man 5 Textboxen erstellt in einer Form, dass diese TextBox1 bis TextBox5 heißen?
Wenn nicht Name, sondern wirklich Text (was natürlich nur bei text-enthaltenden Objekten wie einem Label, einer Textbox oder Artverwandten Sinn ergibt), wäre es doch ein Leichtes, den einfach im Konstruktor vorzubelegen (Sub New), und z.B. die On-Paint zu überschreiben (Protected Overrides OnPaint(...)) und den dort sogar noch anzuzeigen (im Designer).
Aber mir ist nicht ganz klar, ob es um den Namen oder einen Text geht.
Nur mal so fix zum Testen gecoded:
Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load End Sub End Class Public Class TestControl Inherits Control Public Sub New() Me.Text = Me.Name End Sub Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs) MyBase.OnPaint(e) With e.Graphics Dim TSize As SizeF = .MeasureString(Me.Text, Me.Font) .DrawString(Me.Text, Me.Font, New SolidBrush(Color.Black), New Point((Me.Width - TSize.Width) / 2, (Me.Height - TSize.Height) / 2)) End With End Sub End Class
Einfach mal so in nen leeres Projekt reinkopieren, erstellen, beenden und dann im Designer das Testcontrol einfügen in die Form. Ist es das, was du meintest?
LG, Dennis.- Als Antwort markiert Mac Bath Freitag, 24. August 2012 12:45