| |
VB.NET - FortgeschritteneEingabe im Ereignisfenster werden nicht übernommen | | | Autor: Ne koelsche Jung | Datum: 10.04.19 10:32 |
| Hallo,
ich habe meinem Usercontrol die Texteigenschaft gegeben und sie so im
Eigenschaftsfenster sichtbar gemacht.
<Browsable(True), Description("Text der zurück gegeben wird oder der" & _
"angezeigt werden soll")> _
Public Shadows Property Text As String
Get
Return _Text
End Get
Set(ByVal value As String)
_Text = value
End Set
End Property Leider werden die Änderungen die ich im Eigenschaftsfenster mache nicht in das Usercontrol übernommen.
Im Web findet man auch nichts genaues.
Danke, Ne koelsche Jung
_______________________________________________________________
Jeder Mensch ist anders. Darum nimm jeden Menschen so wie er ist.
Beitrag wurde zuletzt am 10.04.19 um 10:35:45 editiert. | |
Re: Eingabe im Ereignisfenster werden nicht übernommen | | | Autor: Manfred X | Datum: 10.04.19 11:26 |
| Hallo!
Probiere folgendes Usercontrol.
Diese Klasse ist als Benutzersteuerelement in das Projekt eingefügt
und besitzt deshalb eine automatisch generierte DesignerKlasse
in der der Code "InitializeComponent" und "Dispose" enthalten ist.
Man beachte: Overrides !
Imports System.ComponentModel
Public Class ucTest
Private Sub ucTest_Load(sender As Object, _
e As EventArgs) Handles MyBase.Load
Me.Invalidate()
End Sub
Dim _text As String = ""
Dim _textfont As New Font("Arial", 14, FontStyle.Bold)
Public Shadows Event TextChanged(sender As Object, e As EventArgs)
<Browsable(True), Description("Text der zurück gegeben wird oder der" &
"angezeigt werden soll"), RefreshProperties(RefreshProperties.Repaint)>
Public Overrides Property Text As String
Get
Return _text
End Get
Set(ByVal value As String)
If value IsNot Nothing Then
_text = value
RaiseEvent TextChanged(Me, EventArgs.Empty)
End If
End Set
End Property
Private Sub ucTest_TextChanged(sender As Object, e As EventArgs) Handles _
Me.TextChanged
Me.Invalidate()
End Sub
Private Sub ucTest_Paint(sender As Object, e As PaintEventArgs) Handles _
Me.Paint
Using br As New SolidBrush(Color.Red)
e.Graphics.DrawString(Text & vbCrLf & "Grüße vom Event", _textfont, _
br, 10, 10)
End Using
End Sub
End Class
Beitrag wurde zuletzt am 10.04.19 um 11:27:46 editiert. | |
Re: Eingabe im Ereignisfenster werden nicht übernommen | | | Autor: Ne koelsche Jung | Datum: 10.04.19 11:59 |
| Hallo Manfred,
Ich kann jetzt Frust abbauen und entspannt weiter machen.
Dank deiner schnellen Hilfe.
Ne koelsche Jung
_______________________________________________________________
Jeder Mensch ist anders. Darum nimm jeden Menschen so wie er ist. | |
Re: Eingabe im Ereignisfenster werden nicht übernommen | | | Autor: Ne koelsche Jung | Datum: 10.04.19 12:40 |
| Hallo Manfred,
habe mich da zu gefreut.
Der Text den ich im Eigenschaftsfenster eingebe wird im Usercontrol auf der Form angezeigt.
Bei einem Programmstart aber nicht. Ebenso ist die Eingabe nicht mehr vorhanden.
Finde den Grund nicht weshalb die Eingabe nicht übernommen wird.
Beim Debuggen wird nichts aufgerufen.
Die Eingabe wird nicht in den String _Text übernommen.
Danke für die Hilfe
Ups... Habe deinen Beitrag zu spät gesehen.
Werde mir die Lektüre mal ansehen.
Sorry.
_______________________________________________________________
Jeder Mensch ist anders. Darum nimm jeden Menschen so wie er ist.
Beitrag wurde zuletzt am 10.04.19 um 12:42:42 editiert. | |
Re: Eingabe im Ereignisfenster werden nicht übernommen | | | Autor: Manfred X | Datum: 10.04.19 13:25 |
| Du mußt den Inhalt Deiner _text-Variable persistent machen.
Ich kenne Dein Programm nicht.
Es gibt Settings, Propertybags usw.
Hier ein triviales Beispiel mit einer Textdatei.
Imports System.ComponentModel
Public Class ucTest
Private Sub ucTest_Load(sender As Object, e As EventArgs) Handles _
MyBase.Load
If IO.File.Exists(Textfile) Then
'den Text laden
Text = IO.File.ReadAllText(Textfile)
End If
Me.Invalidate()
End Sub
Dim Textfile As String = "G:\daten\usercontrol_text.txt"
Dim _text As String
Dim _textfont As New Font("Arial", 14, FontStyle.Bold)
Public Shadows Event TextChanged(sender As Object, e As EventArgs)
<Browsable(True), Description("Text der zurück gegeben wird oder der" &
" angezeigt werden soll"), RefreshProperties(RefreshProperties.Repaint)>
Public Overrides Property Text As String
Get
Return _text
End Get
Set(ByVal value As String)
If value IsNot Nothing Then
_text = value
'den Text speichern
IO.File.WriteAllText(Textfile, Me.Text)
RaiseEvent TextChanged(Me, EventArgs.Empty)
End If
End Set
End Property
Private Sub ucTest_TextChanged(sender As Object,
e As EventArgs) Handles Me.TextChanged
Me.Invalidate()
End Sub
Protected Overrides Sub OnPaint(e As PaintEventArgs)
MyBase.OnPaint(e)
Using br As New SolidBrush(Color.Red)
e.Graphics.DrawString(Text & vbCrLf & "Grüße vom Event", _textfont, _
br, 10, 10)
End Using
End Sub
End Class Falls es nur darum geht, die Eigenschaft im Designerfenster sichtbar zu machen:
<Browsable(True), Description("Text der zurück gegeben wird oder der" &
" angezeigt werden soll")>
Public Overrides Property Text As String Es darf dann keine Variable deklariert werden!
Beitrag wurde zuletzt am 10.04.19 um 13:39:26 editiert. | |
Re: Eingabe im Ereignisfenster werden nicht übernommen | | | Autor: Kuno60 | Datum: 10.04.19 16:10 |
| Hallo,
im UserControl ist die Text-Eigenschaft, mit diesen Attributen, ausgeblendet:
<EditorBrowsable(EditorBrowsableState.Never)>
<Browsable(False), Bindable(False)>
<DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)> Zum Aktivieren, musst du die Text-Eigenschaft überschreiben und die Attribute neu setzen.
Die Attribute: RefreshProperties und Description, sind nicht erforderlich.
Besonders wichtig ist: DesignerSerializationVisibility, damit die Eigenschaft auch gespeichert wird.
Imports System.ComponentModel
Public Class UserControlWithText
<EditorBrowsable(EditorBrowsableState.Always)>
<Browsable(True), Bindable(True)>
<DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)>
Public Overrides Property Text As String
Get
Return MyBase.Text
End Get
Set(value As String)
MyBase.Text = value
Me.Invalidate()
End Set
End Property
'Nur Test, im Entwurfsmodus:
Protected Overrides Sub OnPaint(e As PaintEventArgs)
If DesignMode Then
e.Graphics.DrawString(Text, Font, New SolidBrush(ForeColor), _
DisplayRectangle)
Else
MyBase.OnPaint(e)
End If
End Sub
End Class
Beitrag wurde zuletzt am 10.04.19 um 16:17:58 editiert. | |
Re: Eingabe im Ereignisfenster werden nicht übernommen | | | Autor: sv00010 | Datum: 11.04.19 17:17 |
| Du solltest auch mit InvokeRequired überprüfen, ob dein Text Invoke benötigt.
Ein Event aus einem Timer kann dies nötig machen. | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevISDN 1.0
Überwachung aller eingehender Anrufe!
Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Weitere InfosTipp des Monats sevZIP40 Pro DLL
Zippen und Unzippen wie die Profis!
Mit nur wenigen Zeilen Code statten Sie Ihre Anwendungen ab sofort mit schnellen Zip- und Unzip-Funktionen aus. Hierbei lassen sich entweder einzelnen Dateien oder auch gesamte Ordner zippen bzw. entpacken. Weitere Infos
|