Mam RichTextBox
, który musi zawierać kilka przycisków, które powinny być usunięte (obsługiwane), gdy użytkownik edytuje zawartość w nim. Mogę sprawdzić, czy usuwam (Backspace, Delete lub Cut) tekst (znaki), ale nie element kontrolny <Button>
.Jak sprawdzić, czy usuwam (Backspace, Delete lub "Cut") UMIlement w RichTextBox?
dołączony jest kod Użyłem
XAML
<RichTextBox x:Name="tRTB"
HorizontalAlignment="Left"
Keyboard.PreviewKeyDown="tRTB_PreviewKeyDown"
PreviewTextInput="tRTB_PreviewTextInput">
<local:EnabledFlowDocument x:Name="tFD">
<Paragraph x:Name="tP">
</Paragraph>
</local:EnabledFlowDocument>
</RichTextBox>
C#
public void AppendNewButton(int i)
{
Button addB = new Button();
addB.Content = i;
addB.HorizontalAlignment = HorizontalAlignment.Left;
tP.Inlines.Add(addB);
tP.Inlines.Add("Bk" + i.ToString()); //appends a button and text in RTB
}
i
private void tRTB_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Back)
{
var start = tRTB.CaretPosition;
var t = start.GetTextInRun(LogicalDirection.Backward);
var end = start.GetNextContextPosition(LogicalDirection.Backward);
var t1 = end.GetTextInRun(LogicalDirection.Backward);
tRTB.Selection.Select(start, end);
tRTB.Selection.ApplyPropertyValue(TextElement.ForegroundProperty, Brushes.Black);
tRTB.Selection.Select(start, start);
//should handle deletion of button here
/* if (button is before cursor) */
/* e.Handled=true; */
}
}
Rozumiem, że dostaje tylko start.GetTextInRun tekst, a otrzymuję wartość "" (null) podczas cofania przycisku. Ale próbowałem również start.GetAdjacentElement, ale nie udało mi się odzyskać w tym samym stanie.
Proszę pomóc!
Oblicz pozycję Caret i guzik, w stosunku do RTB. – Code0987
Nie rozumiem. Jak mogę to zrobić? Mogę uzyskać pozycję opiekuna, ale nie mogę uzyskać przycisku –
przycisku mam na myśli fizyczną pozycję. Możesz obliczyć ich fizyczną pozycję, a następnie, jeśli zderzają się i twój stan się zgadza, zrób swoje rzeczy. – Code0987