locked
Bezeichnung (Font.Style) von Optionsfeldern ändern (VB.Net) RRS feed

  • Frage

  • Hallo,

    wie ist es möglich, die Beschriftung von Optionsfeldern bei Auswahl von "Normal" auf "Fett" umzuwandeln und zurück?
    Habe ca. 15 Optionsfelder und der Benutzer soll erkennen, welches Optionsfeld er gerade aktiviert hat.
    Wenn er ein neues Optionsfeld selektiert soll das vorab gewählte wieder Schriftart "Normal" bekommen ...

    Danke für die Hilfe


    Gruß ro_grille

    Freitag, 11. Oktober 2019 16:13

Antworten

  • Hi,
    wenn die genutzte Technologie nicht genannt ist, dann gehe ich nicht davon aus, dass ältere Technologien gemeint sind.

    Hier mal eine kleine Demo. Einfach in eine leere Form kopieren (ohne weitere Design-Aktivitäten). Mit dem ChckedChanged-Ereignis wird die Änderung des Zustandes "gefangen" in in Abhängigkeit von der Checked-Eigenschaft der Style gesetzt.

    Public Class Form1
      Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        For i = 1 To 10
          Dim rb As New RadioButton With {.Text = $"Option {i}", .Top = i * 20}
          AddHandler rb.CheckedChanged, AddressOf rb_CheckedChanged
          Me.Controls.Add(rb)
        Next
      End Sub
    
      Private Sub rb_CheckedChanged(sender As Object, e As EventArgs)
        Dim rb = TryCast(sender, RadioButton)
        If rb Is Nothing Then Exit Sub
        rb.Font = New Font(rb.Font.FontFamily, rb.Font.Size, If(rb.Checked, FontStyle.Bold, FontStyle.Regular))
      End Sub
    
    End Class


    --
    Best Regards / Viele Grüße
    Peter Fleischer (former MVP for Developer Technologies)
    Homepage, Tipps, Tricks

    • Als Antwort markiert ro_grille Sonntag, 13. Oktober 2019 14:01
    Sonntag, 13. Oktober 2019 07:16

Alle Antworten

  • Hi,
    wenn es eine WPF Anwendung ist, dann füge einen Style mit Trigger hinzu, z.B. so:

    <Window x:Class="Window56"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
            xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
            xmlns:local="clr-namespace:WpfApp1"
            mc:Ignorable="d"
            Title="Window56" Height="450" Width="800">
      <Window.Resources>
        <Style TargetType="RadioButton">
          <Setter Property="FontWeight" Value="Normal"/>
          <Style.Triggers>
            <Trigger Property="RadioButton.IsChecked" Value="True">
              <Setter Property="FontWeight" Value="Bold" />
            </Trigger>
          </Style.Triggers>
        </Style>
      </Window.Resources>
      <StackPanel>
        <RadioButton Content="Option 1"/>
        <RadioButton Content="Option 2"/>
        <RadioButton Content="Option 3"/>
        <RadioButton Content="Option 4"/>
        <RadioButton Content="Option 5"/>
        <RadioButton Content="Option 6"/>
        <RadioButton Content="Option 7"/>
        <RadioButton Content="Option 8"/>
        <RadioButton Content="Option 9"/>
        <RadioButton Content="Option 10"/>
        <RadioButton Content="Option 11"/>
        <RadioButton Content="Option 12"/>
        <RadioButton Content="Option 13"/>
        <RadioButton Content="Option 14"/>
        <RadioButton Content="Option 15"/>
      </StackPanel>
    </Window>


    --
    Best Regards / Viele Grüße
    Peter Fleischer (former MVP for Developer Technologies)
    Homepage, Tipps, Tricks

    Samstag, 12. Oktober 2019 03:04
  • Hallo,

    vielen Dank für die schnelle Antwort und das Beispiel.
    Mit dem Anwenden von Triggern habe ich keine Erfahrung.
    Wo muss ich den Code in meiner Windows-Form einbauen?
    Muss ein Verweis gesetzt werden?

    Danke für die Hilfe


    Gruß ro_grille

    Sonntag, 13. Oktober 2019 06:32
  • Hi,
    wenn die genutzte Technologie nicht genannt ist, dann gehe ich nicht davon aus, dass ältere Technologien gemeint sind.

    Hier mal eine kleine Demo. Einfach in eine leere Form kopieren (ohne weitere Design-Aktivitäten). Mit dem ChckedChanged-Ereignis wird die Änderung des Zustandes "gefangen" in in Abhängigkeit von der Checked-Eigenschaft der Style gesetzt.

    Public Class Form1
      Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        For i = 1 To 10
          Dim rb As New RadioButton With {.Text = $"Option {i}", .Top = i * 20}
          AddHandler rb.CheckedChanged, AddressOf rb_CheckedChanged
          Me.Controls.Add(rb)
        Next
      End Sub
    
      Private Sub rb_CheckedChanged(sender As Object, e As EventArgs)
        Dim rb = TryCast(sender, RadioButton)
        If rb Is Nothing Then Exit Sub
        rb.Font = New Font(rb.Font.FontFamily, rb.Font.Size, If(rb.Checked, FontStyle.Bold, FontStyle.Regular))
      End Sub
    
    End Class


    --
    Best Regards / Viele Grüße
    Peter Fleischer (former MVP for Developer Technologies)
    Homepage, Tipps, Tricks

    • Als Antwort markiert ro_grille Sonntag, 13. Oktober 2019 14:01
    Sonntag, 13. Oktober 2019 07:16
  • Hallo,

    funktioniert prima.
    Vielen Dank


    Gruß ro_grille

    Sonntag, 13. Oktober 2019 14:01