none
WPF/VisualBasic/Select Case x:name RRS feed

  • Frage

  • Ich möchte gern die Eigenschaft x:Name des Elementes auslesen aber es scheitert.Folgenden Code möchte ich nutzen:

     

     Select Case x:Name
              Case "btn01"
                        MessageBox.Show("")
     End Select
    

    Was mache ich falsch?

    Auch das weglassen des "x" bringt gar nichts.

     


    Es geht mir um WPF(XAML) Visual Studio Proff. 2010, VisualBasic, Win7 und verständliche Hilfe. Als Quelle nutze ich oft msdn Hilfe.
    • Bearbeitet Thomas2705 Montag, 31. Oktober 2011 17:45
    Montag, 31. Oktober 2011 17:42

Antworten

  • >>"du musst den switch auf ein objekt ausführen" Das verstehe ich nicht.
    Sorry switch ist C# Syntax in VB.NET heißt es Select Case...

    Hier ein Beispiel:

        Private Sub Button_Click(sender As System.Object, e As System.Windows.RoutedEventArgs)
    
            Dim button As Button = CType(sender, Button)
    
            Select Case button.Name
                Case "Button1"
                    MessageBox.Show("Button1")
                Case "Button2"
                    MessageBox.Show("Button2")
            End Select
    
        End Sub
    

        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition />
                <RowDefinition />
            </Grid.RowDefinitions>
            <Button Click="Button_Click" x:Name="Button1" Content="Button1" />
            <Button Click="Button_Click" x:Name="Button2" Content="Button2" Grid.Row="1" />
        </Grid>
    


    Montag, 31. Oktober 2011 20:53
    Beantworter
  • Hi,

    wenn du die Funktionalität in eine Sub auslagerst, dann musst du den "sender" Parameter, der an die ...Click Sub übergeben wird, auch an deine neue Sub übergeben.
    Die Logik wandelt ja den sender Parameter in ein Button um und wertet dann den Namen des Button mit dem Select Case aus.

    Das würde vereinfacht so aussehen:

     Private Sub btn02_Click(sender As System.Object, e As System.Windows.RoutedEventArgs)
            SelectCase(sender )
    ... 
     Private Sub SelectCase(sender As System.Object)
            Dim Button As Button = CType(sender, Button)
    
    

     



    Mittwoch, 2. November 2011 15:58
    Beantworter

Alle Antworten

  • du musst den switch auf ein objekt ausführen. Zu welchem Zeitpunkt soll das Element ausgewertet werden? In einem Butzon Click Event?

    Montag, 31. Oktober 2011 18:01
    Beantworter
  • Normalerweise ein click Event auf den Button.

    Das Ereignis wird an eine private Sub abgegeben und der Name des Elementes soll ausgewertet werden. Alternativ könnte es auch die Content Eigenschaft sein aber die will ich eigentlich nicht 6 mal ändern. Content ist ist bisher immer "ok" Es handelt sich um 6 verschiedene Button mit verschiedenen Ereignissen.

    "du musst den switch auf ein objekt ausführen" Das verstehe ich nicht.

    Ich habe es nochmal in folgender Art geändert aber es hilft nicht weiter:

    Private Sub btn_ds_hinzufuegen()
            Dim Name As String
    
            Try
                Select Case Button.NameProperty
                    Case "btn02"
                        MessageBox.Show("")
                End Select
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        End Sub


    Es geht mir um WPF(XAML) Visual Studio Proff. 2010, VisualBasic, Win7 und verständliche Hilfe. Als Quelle nutze ich oft msdn Hilfe.
    • Bearbeitet Thomas2705 Montag, 31. Oktober 2011 18:21
    Montag, 31. Oktober 2011 18:10
  • >>"du musst den switch auf ein objekt ausführen" Das verstehe ich nicht.
    Sorry switch ist C# Syntax in VB.NET heißt es Select Case...

    Hier ein Beispiel:

        Private Sub Button_Click(sender As System.Object, e As System.Windows.RoutedEventArgs)
    
            Dim button As Button = CType(sender, Button)
    
            Select Case button.Name
                Case "Button1"
                    MessageBox.Show("Button1")
                Case "Button2"
                    MessageBox.Show("Button2")
            End Select
    
        End Sub
    

        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition />
                <RowDefinition />
            </Grid.RowDefinitions>
            <Button Click="Button_Click" x:Name="Button1" Content="Button1" />
            <Button Click="Button_Click" x:Name="Button2" Content="Button2" Grid.Row="1" />
        </Grid>
    


    Montag, 31. Oktober 2011 20:53
    Beantworter
  • Ich danke Dir sehr.
    Thomas
    Nachtrag: Im direkten Ereignis des Button funktioniert der Code ohne weiteres.
    Wenn ich aber das Ereignis in eine private Sub auslagere kommt der Fehler Zeile 2 "sender wurde nicht deklariert..."
    Bei mir sieht es folgendermaßen aus:
     
     Private Sub btn02_Click(sender As System.Object, e As System.Windows.RoutedEventArgs)
            SelectCase()
    ...
     Private Sub SelectCase()
            Dim Button As Button = CType(sender, Button)
    
            Try
                Select Case Button.Name
                    Case "btn02"
                        MessageBox.Show("Button2")
                    Case "btn03"
                        MessageBox.Show("Button3")
                End Select
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
    
        End Sub

    Auch wenn ich etwas herumspiele und die Änderungsvorschläge der Hilfe nutze komme ich nicht zum gewünschten Ergebnis

    Es geht mir um WPF(XAML) Visual Studio Proff. 2010, VisualBasic, Win7 und verständliche Hilfe. Als Quelle nutze ich oft msdn Hilfe.
    • Bearbeitet Thomas2705 Mittwoch, 2. November 2011 15:01
    Mittwoch, 2. November 2011 06:45
  • Hi,

    wenn du die Funktionalität in eine Sub auslagerst, dann musst du den "sender" Parameter, der an die ...Click Sub übergeben wird, auch an deine neue Sub übergeben.
    Die Logik wandelt ja den sender Parameter in ein Button um und wertet dann den Namen des Button mit dem Select Case aus.

    Das würde vereinfacht so aussehen:

     Private Sub btn02_Click(sender As System.Object, e As System.Windows.RoutedEventArgs)
            SelectCase(sender )
    ... 
     Private Sub SelectCase(sender As System.Object)
            Dim Button As Button = CType(sender, Button)
    
    

     



    Mittwoch, 2. November 2011 15:58
    Beantworter