vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevAniGif - als kostenlose Vollversion auf unserer vb@rchiv CD Vol.5  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Eingabe 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.

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Eingabe im Ereignisfenster werden nicht übernommen 
Autor: Manfred X
Datum: 10.04.19 12:36

Entspannung ist erst nach der Lektüre des folgenden Beitrags
und sämtlicher dort verlinkter weiterer Texte zulässig!
https://docs.microsoft.com/en-us/dotnet/visual-basic/programming-guide/language-features/declared-elements/shadowing
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Eingabe im Ereignisfenster werden nicht übernommen 
Autor: Ne koelsche Jung
Datum: 10.04.19 23:05

Werde mich gleich mal damit beschäftigen.
Danke an Euch beiden.

_______________________________________________________________
Jeder Mensch ist anders. Darum nimm jeden Menschen so wie er ist.

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel