RichTextBox
adresinde, kullanıcı içeriği düzenlerken düzgün şekilde (işlendiğinde) silinmesi gereken bazı düğmeler içermesi gerekiyor. Silmek (Backspace, Delete veya Cut) metni (karakterleri) sildiğimi, ancak <Button>
denetim öğesinin olup olmadığını kontrol edebiliyorum. Ekli Bir RichTextBox'ta bir UIElement'i sildiğim (Backspace, Delete veya 'Cut') olup olmadığını nasıl kontrol edebilirim?
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>
kullandım kodudur 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
}
ve
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; */
}
}
Ben start.GetTextInRun sadece alır anlıyoruz metin alıyorum Bir düğmeyi geri oynatırken "" (null) değeri. Ama ben start.GetAdjacentElement denedim ama aynı durumda bir almak için başarılı olamıyorum.
yardım edin!
RTB göre İmleciyle ve Düğme, konumunu hesaplayın: İşte benim kod. – Code0987
Tam olarak anlamadım .. Bunu nasıl yaparım? Bakma pozisyonunu alabilirim ama düğmenin –
kodunu alamıyorum. Fiziksel pozisyonlarını hesaplayabilir ve çarpışırsa ve durumunuz eşleşirse, eşyalarınızı yapın. – Code0987