Hallo,
ich habe folgende Textboxen:
<TextBox Name="edtSuchen" BorderThickness="1" BorderBrush="Black" Width="150" ToolTip="Bitte Suchbegriff eingeben. Suche Starten mit der Enter-Taste" Focusable="True" KeyDown="edtSuchen_KeyPress" GotFocus="TextBox_GotFocus" LostFocus="TextBox_LostFocus" TabIndex="3"/>
<TextBox Name="edtErsetzen" BorderThickness="1" BorderBrush="Black" Width="150" ToolTip="Bitte Begriff eingeben, durch den der Suchbegriff ersetzt werden soll. Ersetzen Starten mit der Enter-Taste" KeyDown="edtErsetzen_KeyPress" GotFocus="TextBox_GotFocus" LostFocus="TextBox_LostFocus" TabIndex="4"/>
<TextBox Name="TBXEditor" DockPanel.Dock="Top" MinWidth="525" MinHeight="240" AcceptsReturn="True" FontSize="{Binding Path=SelectedValue.Content, ElementName=ComboboxFontsize}" FontFamily="{Binding Path=SelectedValue, ElementName=ComboboxFontname}" KeyboardNavigation.TabNavigation="Continue" KeyDown="TBXEditorBox_KeyDown" GotFocus="TextBox_GotFocus" LostFocus="TextBox_LostFocus" TabIndex="6" FocusManager.IsFocusScope="True">
Für alle drei Textboxen habe ich diese Ereignismethoden gecodet:
private void TextBox_GotFocus(Object sender, EventArgs e)
{
if (ChkBarrierefrei.IsChecked.Value == true)
(sender as TextBox).Background = AKTIVES_ELEMENT_CONTRAST;
}
private void TextBox_LostFocus(Object sender, RoutedEventArgs e)
{
if (ChkBarrierefrei.IsChecked.Value == true)
(sender as TextBox).Background = NICHTAKTIVES_ELEMENT_CONTRAST;
}
Bei der Textbox **TBXEditor ** wird Gotfocus und LostFocus nicht ausgeführt.
Weiß jemand warum und was ich dagegen tun kann?
barrierefreies Webdesign, barrierefreie Softwareentwicklung mit C#, barrierefreie Softwareentwicklung mit Java
Könnte dies mit
KeyboardNavigation.TabNavigation="Continue"
zusammenhängen?
Nein! Ich habe es gerade entfernt und es hat sich nichts geändert!
barrierefreies Webdesign, barrierefreie Softwareentwicklung mit C#, barrierefreie Softwareentwicklung mit Java
Und
FocusManager.IsFocusScope="True"
?
Dies hatte ich dir ja in dem anderen Beitrag u.a. empfohlen, aber dadurch sollte ja LostFocus
überflüssig sein (wobei der FocusManager selbst diese Ereignisse auch hat).
FocusManager.IsFocusScope="True"
Daran liegt es nicht!
Andere Idee:
kann es sein, dass es daran liegt, dass meine Textbox "TBXEditor" in keinem Extra Container ist?
Mein gesamter XAML-Code sieht so aus:
<Grid>
<DockPanel Name="Container">
<Menu Name="Hauptmenu" DockPanel.Dock="Top" TabIndex="0">
<MenuItem Header="_Datei">
<MenuItem Command="New" Header="_Neu" InputGestureText="Strg+N" />
<MenuItem Command="Open" Header="_Öffnen" InputGestureText="Strg+O" />
<MenuItem Command="Save" Header="_Speichern" InputGestureText="Strg+S" />
<MenuItem Header="Speichern _unter" Click="SaveFileAsMenuItem_Click" />
<Separator />
<MenuItem Command="Print" Header="_Drucken" InputGestureText="Strg+P" />
<Separator />
<MenuItem Header="_Ende" Click="EndeMenuItem_Click" />
</MenuItem>
<MenuItem Header="_Bearbeiten">
<MenuItem Command="Undo" Header="_Rückgängig" InputGestureText="Strg+Z" Click="undo_Click" />
<Separator />
<MenuItem Command="Cut" Header="_Ausschneiden" InputGestureText="Strg+X" Click="cut_Click" />
<MenuItem Command="Copy" Header="_Kopieren" InputGestureText="Strg+C" Click="copy_Click" />
<MenuItem Command="Paste" Header="_Einfügen" InputGestureText="Strg+V" Click="paste_Click" />
<Separator />
<MenuItem Header="Alles _markieren" InputGestureText="Strg+A" Click="selectAll_Click" />
<Separator />
<MenuItem Header="_Zeilenumbruch" Name="Zeilenumbruch" IsCheckable="True" Click="WrapLine_Click" />
</MenuItem>
<MenuItem Header="_Hilfe">
<MenuItem Header="Hilfe _anzeigen" Click="Help_Click"/>
<MenuItem Header="_Info" Click="ProgrammInfo_Click"/>
</MenuItem>
</Menu>
<ToolBarTray DockPanel.Dock="Top">
<ToolBar VerticalAlignment="Top" KeyboardNavigation.TabNavigation="Continue">
<ComboBox x:Name="ComboboxFontname" ToolTip="Auswahlliste um Schriftart festzulegen" SelectedIndex="0" Width="200" GotFocus="ComboBox_GotFocus" LostFocus="ComboBox_LostFocus" TabIndex="1" />
<ComboBox x:Name="ComboboxFontsize" ToolTip="Auswahlliste um Schriftgröße festzulegen" SelectedIndex="0" Width="45" GotFocus="ComboBox_GotFocus" LostFocus="ComboBox_LostFocus" TabIndex="2">
<ComboBoxItem Content="12"/>
<ComboBoxItem Content="14"/>
<ComboBoxItem Content="16"/>
<ComboBoxItem Content="18"/>
<ComboBoxItem Content="20"/>
<ComboBoxItem Content="22"/>
<ComboBoxItem Content="24"/>
<ComboBoxItem Content="26"/>
<ComboBoxItem Content="28"/>
<ComboBoxItem Content="32"/>
<ComboBoxItem Content="36"/>
<ComboBoxItem Content="40"/>
</ComboBox>
<Label Name="lblSuchen" Content="_Suchen" Target="{Binding ElementName=edtSuchen}"/>
<TextBox Name="edtSuchen" BorderThickness="1" BorderBrush="Black" Width="150" ToolTip="Bitte Suchbegriff eingeben. Suche Starten mit der Enter-Taste" Focusable="True" KeyDown="edtSuchen_KeyPress" GotFocus="TextBox_GotFocus" LostFocus="TextBox_LostFocus" TabIndex="3"/>
<Label Name="lblErsetzen" Content="_Ersetzen" Target="{Binding ElementName=edtErsetzen}"/>
<TextBox Name="edtErsetzen" BorderThickness="1" BorderBrush="Black" Width="150" ToolTip="Bitte Begriff eingeben, durch den der Suchbegriff ersetzt werden soll. Ersetzen Starten mit der Enter-Taste" KeyDown="edtErsetzen_KeyPress" GotFocus="TextBox_GotFocus" LostFocus="TextBox_LostFocus" TabIndex="4"/>
<Grid>
<CheckBox Name="ChkBarrierefrei" BorderThickness="1" Content="Editor ba_rrierefrei" Margin="8" Click="ChkBarrierefrei_CheckedChanged" TabIndex="5" KeyDown="ChkBarrierefrei_KeyDown"/>
</Grid>
</ToolBar>
</ToolBarTray>
<TextBox Name="TBXEditor" DockPanel.Dock="Top" MinWidth="525" MinHeight="240" AcceptsReturn="True" FontSize="{Binding Path=SelectedValue.Content, ElementName=ComboboxFontsize}" FontFamily="{Binding Path=SelectedValue, ElementName=ComboboxFontname}" KeyDown="TBXEditorBox_KeyDown" GotFocus="TextBox_GotFocus" FocusManager.IsFocusScope="True" TabIndex="6">
</TextBox>
</DockPanel>
</Grid>
barrierefreies Webdesign, barrierefreie Softwareentwicklung mit C#, barrierefreie Softwareentwicklung mit Java
@Th69
Ich habe nochmal getestet.
Kann doch damit
FocusManager.IsFocusScope="True"
Zusammenhängen.
Weißt Du wie man das mit C# setzen kann?
Ich habe da eine Idee ...
barrierefreies Webdesign, barrierefreie Softwareentwicklung mit C#, barrierefreie Softwareentwicklung mit Java
Danke!
Ich finde aber nur
FocusManager.SetFocusedElement
Weiß nicht ob das richtig ist.
barrierefreies Webdesign, barrierefreie Softwareentwicklung mit C#, barrierefreie Softwareentwicklung mit Java
Hat Funktioniert.
Jetzt habe ich folgendes Problem:
<TextBox Name="TBXEditor" DockPanel.Dock="Top" MinWidth="525" MinHeight="240" AcceptsReturn="True" FontSize="{Binding Path=SelectedValue.Content, ElementName=ComboboxFontsize}" FontFamily="{Binding Path=SelectedValue, ElementName=ComboboxFontname}" GotFocus="TextBox_GotFocus" LostFocus="TBXEditorBox_LostFokus" TabIndex="6">
private void TBXEditorBox_LostFokus(object sender, RoutedEventArgs e)
{
if (ChkBarrierefrei.IsChecked.Value == true)
{
MessageBox.Show("Lostfocus:" + sender.ToString());
TBXEditor.Background = NICHTAKTIVES_ELEMENT_CONTRAST;
TBXEditor.BorderThickness = new Thickness(1);
}
}
TBXEditorBox_LostFokus wird erst ausgeführt wenn ich das Programmfenster schließe!
Woran kann das liegen?
Gibt es eine Alternative zum Ereignis LostFokus?
barrierefreies Webdesign, barrierefreie Softwareentwicklung mit C#, barrierefreie Softwareentwicklung mit Java
Vllt. hilft dir Highlight a WPF control when it gets focus?
Um einen Style zu deaktivieren (wegen deiner Barrierefrei-Bedingung) s. Disabling style triggers created in xaml programatically.
Ich habe es gelöst, es gibt noch ein anderes Ereignis als Lostfokus.
LostKeyboardFocus
private void TextBoxLostKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
{
TextBox source = e.Source as TextBox;
if (source != null)
{
source.Background = NICHTAKTIVES_ELEMENT_CONTRAST;
source.Clear();
}
}
Das funktioniert zuverlässig!
Problem gelöst!
barrierefreies Webdesign, barrierefreie Softwareentwicklung mit C#, barrierefreie Softwareentwicklung mit Java