vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Schützen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 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 - Ein- und Umsteiger
Datenaustausch zwischen unterschiedlichen Formen 
Autor: spatzimatzi
Datum: 02.11.16 13:22

Hallo,
grundsätzlich funktioniert der Datenaustausch zwischen den Formen.
Aber dazu muss jeweils die 2. Form geschlossen werden.
Möchte jedoch über einen Button den Datenaustausch einläuten und die Masken bleiben bestehen

In meiner Form1 habe ich mehrere RichTextBoxen. Diese Boxen sind relativ klein.
Damit man ordentlich den Text formatieren kann, besteht die Möglichkeit, über das Kontext-Menü der RTB eine 2. Form aufzurufen und den Inhalt über Properties zu übergeben. Die 2. Form ähnelt dabei einer sehr einfachen WordPad-Darstellung. Alle wichtige Elemente zum Formatieren des Textes sind enthalten.
Nach Änderungen werden über ein OK-Button der Form2 die RTB-Inhalte (RTB.rtf) über die Properties zurückgegeben und die Form2 geschlossen.

Jetzt möchte ich diesen Austausch durchziehen, ohne die 2. Form zu schließen.
Wie mache ich dies?

Auszug aus meinen Programm:

Im Kontext-Menü:
...
Using frm2 as New Form2
  frm2.RTB = RichTextBox_Form1
 
  If frm2.ShowDialog() = DialogResult.OK then
    RichTextBox_Form1.Rtf = frm2.RTB.Rtf
  End If
End Using
In der Form2:

Private _RTB as RichTextBox
...
 
Public Property RTB() As RichTextBox
  Get 
    Return _RTB
  End Get
 
  Set (ByVal Value As RichTextBox)
    _RTB = Value
  End Set
End Property
Wenn ich die Daten übergeben möchte, dann schließe ich die Form2 über den OK-Button
Das funktioniert einwandfrei.

Private sub btnOK_Click(...)
If bolChanges = True Then
  Me.DialogResult = Windows.Forms.DialogResult.OK
  RTB.Rtf = RichTextBox_Form2.Rtf
End If
Me.Close()
End Sub
Meine Fragen:
- Wie kann ich die Informationen zurückgeben, ohne die Form2 zu schließen
- Das WordPad wird in einfacher Form (nur die wichtigsten Textanpassungen)von mir simuliert.
-- Kann man auch direkt Wordpad aufrufen, die Daten aus dem RichTextBox aus Form1 übergeben,
-- Änderungen durchführen und diese zurückgeben? Dann könnte ich mir die Simulation ersparen.
- Gebt mir auch bitte Tipps, wenn die obigen Scripts verbessert werden können bzw. müssen.


Viele Grüße
spatzimatzi
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Datenaustausch zwischen unterschiedlichen Formen 
Autor: effeff
Datum: 02.11.16 16:24

Auf Form 1: Eine RichTextBox namens "RichTextBox1", ein Button namens "Button1".

Auf Form 2: Eine RichTextBox namens "RichTextBox2".

Form 1:
Public Class Form1
 
    Private mRTFInhalt1 As String
 
    Public Property RTFInhalt1 As String
        Get
            Return mRTFInhalt1
        End Get
        Set(value As String)
            mRTFInhalt1 = value
            RichTextBox1.Text = mRTFInhalt1
        End Set
    End Property
 
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) _
      Handles Button1.Click
        Dim frmForm2 As New Form2
 
        With frmForm2
            .RTFInhalt2 = RichTextBox1.Text
            '.frmForm = Me
            .RTB = Me.RichTextBox1
            .ShowDialog()
        End With
    End Sub
 
End Class
Form 2:
Public Class Form2
 
    Private mRTFInhalt2 As String
    Private mRTB As RichTextBox
 
    Public Property RTFInhalt2 As String
        Get
            Return mRTFInhalt2
        End Get
        Set(value As String)
            mRTFInhalt2 = value
        End Set
    End Property
 
    Public Property RTB As RichTextBox
        Get
            Return mRTB
        End Get
        Set(value As RichTextBox)
            mRTB = value
        End Set
    End Property
 
    Private Sub RichTextBox2_TextChanged(sender As System.Object, e As _
      System.EventArgs) Handles RichTextBox2.TextChanged
        RTB.Text = RichTextBox2.Text
    End Sub
 
    Private Sub Form2_Load(sender As System.Object, e As System.EventArgs) _
      Handles MyBase.Load
        RichTextBox2.Text = mRTFInhalt2
    End Sub
End Class

EALA FREYA FRESENA

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Datenaustausch zwischen unterschiedlichen Formen 
Autor: spatzimatzi
Datum: 02.11.16 16:56

Hallo effeff,
vielen Dank für das Script.

Habe nicht verstanden, was die Property in Form 1 macht.

Ansonsten ist mein Script mit Deinem Script vergleichbar.
Bei Dir werden die Änderungen über TextChanged unmittelbar übertragen.
Die Zeile RTB.Text = RichTextBox2.Text löst bei mir jeweils ein Schließen der Form 2 aus.
Daher kam ich auch nicht weiter.

Vielleicht habe ich auch etwas nicht verstanden. Bei meinem Kenntnisstand ist das ohne weiteres möglich.

Vielen Dank
spatzimatzi
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Datenaustausch zwischen unterschiedlichen Formen 
Autor: effeff
Datum: 02.11.16 17:15

Natürlich löst das bei Dir ein Schließen der Form aus, weil nach dem übernehmen des Textes ja das Using der Form aufhört...

Die Property für die Variable auf Form1 wird übrigens gar nicht benutzt; Das stand da noch, weil ich etwas anderes im Sinn hatte; Eigentlich sollte durch die Änderung des Textes in der RichTextBox auf Form2 der Inhalt der entsprechenden Variable auf der Form1 über die Property geändert werden und dabei dann der Inhalt der TextBox1 sich anpassen.

Also, der Unterschied: Bei Dir wird der Text im Using auf der Form1 übernommen, bei mir wird er bei einer Änderung auf der Form2 übernommen.

EALA FREYA FRESENA

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Datenaustausch zwischen unterschiedlichen Formen 
Autor: spatzimatzi
Datum: 02.11.16 17:24

Hallo effeff,
danke für die Info. Klasse! Problem hätte ich nicht gefunden!

Vielen Dank
spatzimatzi
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Datenaustausch zwischen unterschiedlichen Formen 
Autor: effeff
Datum: 02.11.16 17:32

Tja, uns aussehen sollte der Code eigentlich so:

Auf Form 1: Eine RichTextBox namens "RichTextBox1", ein Button namens "Button1".
Auf Form 2: Eine RichTextBox namens "RichTextBox2".

Public Class Form1
 
    Private mRTFInhalt1 As String
 
    Public Property RTFInhalt1 As String
        Get
            Return mRTFInhalt1
        End Get
        Set(value As String)
            mRTFInhalt1 = value
            RichTextBox1.Text = mRTFInhalt1
        End Set
    End Property
 
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) _
      Handles Button1.Click
        Dim frmForm2 As New Form2
 
        With frmForm2
            .RTFInhalt2 = RichTextBox1.Text
            .Frm1 = Me
            .ShowDialog()
        End With
    End Sub
End Class
Public Class Form2
 
    Private mRTFInhalt2 As String
    Private mFrm1 As Form
 
    Public Property RTFInhalt2 As String
        Get
            Return mRTFInhalt2
        End Get
        Set(value As String)
            mRTFInhalt2 = value
        End Set
    End Property
 
    Public Property Frm1 As Form1
        Get
            Return mFrm1
        End Get
        Set(value As Form1)
            mFrm1 = value
        End Set
    End Property
 
    Private Sub RichTextBox2_TextChanged(sender As System.Object, e As _
      System.EventArgs) Handles RichTextBox2.TextChanged
 
        Dim frm1 As Form1 = mFrm1
        frm1.RTFInhalt1 = RichTextBox2.Text
 
    End Sub
 
    Private Sub Form2_Load(sender As System.Object, e As System.EventArgs) _
      Handles MyBase.Load
 
        RichTextBox2.Text = mRTFInhalt2
 
    End Sub
End Class
An diesem Beispiel kannst Du sehen, dass auf der Form1 die Property RTFInhalt1 gesetzt wird und bei deren Variablenanpassung dann der Inhalt der RichTextBox1 eingetragen wird. So sollte das beim ersten Posting eigentlich schon sein...

EALA FREYA FRESENA

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