2016-11-20 38 views
8

ile seçerken satırsonu karakterlerini vurgularken, tek satırlı bir yazı tipine sahip bir RichTextBox (aşağıda gösterilmiştir) var ve her satırda aynı sayıda karaktere sahip olmalıdır. Bunu yapmak kutuyu besleyen dizede her x karakterden sonra bir \n satır karakteri ekleme gerektirir.TextPointers

Ayrıca, imlecin ok tuşlarına basarak hareket etmesini sağlayarak, tek tek karakterleri hareket ederken seçmesini sağlayan bir algoritma da var. İmleç olsa kutusuna bir kelime kapsar, bu kelimenin tamamını vurgulamak gerekir.

Sorun: Bir kelime mutliple hatları yayılan, ben \n karakteri kaynaklanır varsayalım ilk satırın son karakteri aşağıdaki boş yer vardır.

RichTextBox.Selection.Select() bu boş alanları nasıl vurgulayamaz? ayrıştırma ve böyle yaparken karakterin seçimini şerit olabilir, ama bu boşluk vurgulamak değil muktedir gerekir.

DÜZENLEME: Kabul edilebilir bir alternatif, yeni satırları gereksiz hale getirecektir. olduğu gibi, her nasılsa her satırda, her zaman 12 karakterden böylece RichTextBox düzeltmek, ama kolay pencerenin boyutlarını tutmak istiyorum çünkü bu ideal değildir etmek.

GÜNCELLEME: XAML içinde metin sütun genişliğini azaltmak kenarı üzerine çıkması vurgulamak büyüklüğü azalmış, ama tamamen ortadan kaldırdı değil gibi görünmektedir. Metnin sarılmasına neden olmadan genişliği daha fazla azaltamıyorum.

Example of Problem

+0

benzer bir şey: nasıl belirli bir satır başı çıktı uzunluğunu sınırlamak için olduğunu biliyoruz ve bir sonraki seçimi yayılan gerekir satır, ya da sadece metnin bir parçası olan bir satır başı dönüşü, bu durumda muhtemelen vurgu vurgulamak olmaz? –

+0

Şaryo dönüşlerini ve satır beslemelerini, metin kutusuna yerleştirmeden önce orijinal metinden çıkarır mısınız? –

+0

Hayır. Yoktur. Orijinal metin bir bitişik dizedir. Her 12 karaktere bir '\ r' ekliyorum. – Airhead

cevap

4

Sorun özellikle \n karakteri ilişkili değildir bunu anlayabilmem. , Dalga geçmeyi ve sütunun genişliğini değiştirerek kötü vurgulu alanın genişliğine bir etkisi olduğunu fark ettikten sonra

:

Hala neyin neden olduğunu tamamen emin değilim, ama ben böyle düzelttim Düşürmeyi denedim. Sorun şu ki, bu metin sarmaya neden oldu.

Yani düşündüm, tamam, sadece RichTextBox için WordWrap'i devre dışı bırakacağım, değil mi? Yanlış. WPF bunu devre dışı bırakmamıza izin vermiyor.

WordWrap'i devre dışı bırakmanın etkisini elde etmek için bir yönteme ihtiyacım vardı, bu yüzden biraz okuma yaptıktan sonra, FlowDocumentWidth özelliğini çok büyük bir sayıya ayarlayabildiğimi gördüm, böylece metin hiçbir zaman sarılmayacaktı. Bunu yapmak için, daha sonra kaydırma çubuğunu gitmem ve devre dışı bırakmam gerekiyordu.

Öyleyse, wordwrap devre dışı bırakıldı ve ben de gitmediyse, bozuk alan görünene kadar RichTextBox genişliğini azaltmaya devam edebildim.

Yani, sorun çözüldü, ancak yine de bir sorum var: Microsoft neden benden nefret ediyor?

+0

Windows, satır sonuna "\ r \ n", "\ r" değil "\ n" satırına sahip, satırlar boyunca sözcüğü kesmek için "Environment.NewLine" kullanmalısınız. Kimse senden nefret etmiyor, sorunu hiçbir şeyden yaratmadın – VMAtm

+0

Her iki karakteri de kullanırsam sorunun hala devam ettiğini doğrulayabilirim. Aslında benim kullandığım şey buydu. – Airhead

-1

sen '\ n' ile kelimeyi ayrılmayı deneyin olabilir. daha sonra her bir bölme döngü ve RichTextBox.Selection.Select için geçmesi().

zamanlarda bu yeni hatların (satır başları) ile bir ana sorun olduğunu fark this