vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 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
Bei einem Control via String eine Eigenschaft suchen und ändern 
Autor: Evil Bart
Datum: 26.11.14 07:42

Hallo Forum
Ich möchte bei einem Control via String eine Eigenschaft suchen und ändern.
(Textbox1.Text = „Neuer Text“)

Beispiel (Gedanklich):
Dim ctlBeispiel as Cotrol = Textbox1
Dim sEigenschaft as String = „Text“  'Die gesuchte Eigenschaft
ctlBeispiel.sEigenschaft = „Neuer Text“
So klappt das natürlich nicht. Hat jemand eine Idee wie das zu verwirklichen ist?
Vielen Dank
Andreas
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Bei einem Control via String eine Eigenschaft suchen und ändern 
Autor: minimalist
Datum: 26.11.14 07:59

O.K. es ist nicht ganz klar ob du die Controls erstellen willst oder bestehende ändern möchtest.

So werden die gefunden die existieren un du kannst Eigenschaften raus finden oder ändern:

Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
For Each cControl As Control In Me.Controls
MessageBox.Show(cControl.Name)
Debug.Print(CStr(cControl.Tag))
Next
End Sub


Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
For Each objControl As Control In Me.Controls
If TypeOf objControl Is TextBox Then
If objControl.Tag.ToString <> objControl.Text Then
'---Changes have been made!---
Debug.Print(CType(objControl.Tag, String))
objControl.Text = objControl.Tag.ToString
End If
End If
Next
End Sub
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Bei einem Control via String eine Eigenschaft suchen und ändern 
Autor: Evil Bart
Datum: 26.11.14 09:47

Hallo minimalist
Erst einmal vielen Dank für die schnelle Antwort.
Die Controls sind vorhanden.

Bei
If objControl.Tag.ToString <> objControl.Text Then
laufe ich auf ein -> System.NullReferenceException.
Ich verstehe nicht was diese Zeile vergleicht.

Wie würde ich bei einer ComboBox z.B. die Eigenschaft SelectetItem finden?
Dim ctlBeispiel as Cotrol = Combobox1
Dim sEigenschaft as String = „SelectetItem“  'Die gesuchte Eigenschaft
ctlBeispiel.sEigenschaft = „Erster Eintrag“
Hast Du da noch eine Idee ?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Bei einem Control via String eine Eigenschaft suchen und ändern 
Autor: Manfred X
Datum: 26.11.14 10:01

Hallo!

Das läuft über System-Reflection.
Aber ehe ich genauer darauf eingehe:
Was willst Du erreichen?
Es gibt vermutlich bessere Wege.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Bei einem Control via String eine Eigenschaft suchen und ändern 
Autor: effeff
Datum: 26.11.14 10:17

Dim TB As TextBox=Me.Controls("Textbox1")
TB.Text="juhu"

EALA FREYA FRESENA

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Anything Goes  
Autor: Manfred X
Datum: 26.11.14 10:43

Jonglieren statt Programmieren .....
 ''' <summary>Zuweisung irgendeines Wertes auf _
 ''' irgendeine Eigenschaft irgendeines Controls</summary>
 ''' <param name="someone">Control (Zuweisungsziel)</param>
 ''' <param name="propertyname">Name der Eigenschaft</param>
 ''' <param name="something">zuzuweisendes Objekt</param>
 ''' <returns>true, falls möglich</returns>
 Private Function SetSomethingToSomeOnesProperty _
                  (ByVal someone As Control, _
                   ByVal propertyname As String, _
                   ByVal something As Object) As Boolean
 
    Try
       someone.GetType.GetProperty(propertyname). _
              SetValue(someone, something, Nothing)
 
       Return True
    Catch
       Return False
    End Try
End Function
Anwendung:
Sei "tbo" eine Textbox ...
Dim ret As Boolean = _
   SetSomethingToSomeOnesProperty(tbo, "BackColor", Color.Green)
 
ret = SetSomethingToSomeOnesProperty(tbo, "Text", "JapadapaDuuuuu")
oder ...
Dim lbo As New ListBox
lbo.Items.Add("xxx")
lbo.Items.Add("yyy")
lbo.SelectedIndex = 0
 
ret = SetSomethingToSomeOnesProperty(lbo, "SelectedItem", "yyy")


Beitrag wurde zuletzt am 26.11.14 um 10:44:51 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Tag-Eigenschaft prüfen 
Autor: Manfred X
Datum: 26.11.14 11:10

Diese Zeile
If objControl.Tag.ToString <> objControl.Text Then
funktioniert nur, wenn der Tag-Eigenschaft zuvor ein String
zugewiesen worden ist - das kann auch ein Leerstring sein.
(Du erhälst durch "ToString" sonst ggf. den Objekt-Bezeichner)

Zunächst sollte auf Nothing und Typ geprüft werden:
If TypeOf tbo.Tag Is String Then


Beitrag wurde zuletzt am 26.11.14 um 11:14:22 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Bei einem Control via String eine Eigenschaft suchen und ändern 
Autor: minimalist
Datum: 26.11.14 11:14

laufe ich auf ein -> System.NullReferenceException, das bedeutet das du nichts im control.tag eingetragen hast.
Für selectedItem:

Private Sub showSelectedButton_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Dim selectedIndex As Integer
selectedIndex = comboBox1.SelectedIndex
Dim selectedItem As Object
selectedItem = comboBox1.SelectedItem

MessageBox.Show("Selected Item Text: " & selectedItem.ToString() & Microsoft.VisualBasic.Constants.vbCrLf & _
"Index: " & selectedIndex.ToString())
End Sub
vom Microsoft:http://msdn.microsoft.com/de-de/library/system.windows.forms.combobox.selecteditem%28v=vs.110%29.aspx
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Bei einem Control via String eine Eigenschaft suchen und ändern 
Autor: Evil Bart
Datum: 26.11.14 11:26

Hallo Manfred X
Jip. Genau das ist es

Vielen Dank und viele Grüße aus Kiel
Andreas

PS: Vielen dank natürlich auch an minimalist und effeff

Beitrag wurde zuletzt am 26.11.14 um 11:30:51 editiert.
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