积极答复者
Seleccionar linea en RichTextBox

问题
-
Hola
tengo dos dudas con el RichTextBox.
1ª
Tengo un RichTextBox en el que cargo un archivo de texto mediante el evento RichTextBox.Load.
Realizo busquedas mediante el evento RichTextBox.Find().
La palabra a buscar se introduce en un TextBox y un botón desencadena el evento.
Funciona correctamente. Si la palabra buscada se encuentra, esta es resaltada.
El caso es que yo no quiero que me seleccione/resalte solo la palabra buscada; yo quiero que
me seleccione/resalte la linea entera que la contiene.
Ejemplo:
La palabra buscada: "Manzana"
La linea que la contiene: "La Manzana es una fruta nutritiva y muy sabrosa."
Tal como lo tengo ahora, solo resalta "Manzana".
Tal como yo lo quiero, debería resalta toda la linea, en este caso:
"La Manzana es una fruta nutritiva y muy sabrosa.".
La razón de que lo quiera así, es que debo eliminar las lineas que contengan resultados.
En este caso, la linea que contiene la palabra buscada, o sea, Manzana.
2ª
Relacionada con la anterior.
Cuando elimino una linea me queda el espacio en blanco. el que antes ocupaba la linea eliminada.
Ejemplo:
"La Pera es una fruta nutritiva y muy sabrosa."
"La Manzana es una fruta nutritiva y muy sabrosa."
"La Uva es una fruta nutritiva y muy sabrosa."
Suponiendo que elimino la del medio, queda así:
"La Pera es una fruta nutritiva y muy sabrosa."
"La Uva es una fruta nutritiva y muy sabrosa."
Como puedo evitarlo?. Como consigo, que una vez eliminada una linea, quede así:
"La Pera es una fruta nutritiva y muy sabrosa."
"La Uva es una fruta nutritiva y muy sabrosa."
Sin el espacio en blanco.
El código que utilizo:
Dim Path As String = "C.\TextFile.txt" Me.RichTextBox1.LoadFile(Path, RichTextBoxStreamType.PlainText) Dim tempArray() As String tempArray = Me.RichTextBox1.Lines Dim SearchLine As String = Me.txtSearchFor.Text ' Search key is introducido por usuario. Dim MyIndex1 As Integer = Me.RichTextBox1.Find(SearchLine, RichTextBoxFinds.WholeWord) If MyIndex1 <> -1 Then Me.RichTextBox1.Select(MyIndex1, SearchString.Length) Me.txtSearchFor.Text = Me.RichTextBox1.SelectedText End If
Gracias por adelantado.
Saludos
2010年3月11日 18:02
答案
-
hola
mira este link
Select line in RichTextBox
alli se muestra como seleccionar la linea donde te encuentras
con respecto a las lineas en blanco por ahi esto ayude
Remove Blank Lines from richtextbox
lo que haces es tomar el text y lo separa por salto de linea, pero descarta las vacias
lo malo es que solo funciona con text plano, si aplcias formato al text no funcionara
en ese caso podrias hacer
Removing empty lines from richTextBox?
o sea un foreach, recorriendo linea a linea y validando si esta vacia
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina- 已标记为答案 Jota69 2010年4月19日 21:50
2010年3月13日 4:45
全部回复
-
hola
mira este link
Select line in RichTextBox
alli se muestra como seleccionar la linea donde te encuentras
con respecto a las lineas en blanco por ahi esto ayude
Remove Blank Lines from richtextbox
lo que haces es tomar el text y lo separa por salto de linea, pero descarta las vacias
lo malo es que solo funciona con text plano, si aplcias formato al text no funcionara
en ese caso podrias hacer
Removing empty lines from richTextBox?
o sea un foreach, recorriendo linea a linea y validando si esta vacia
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina- 已标记为答案 Jota69 2010年4月19日 21:50
2010年3月13日 4:45 -
hola
Los dos enlaces sobre las lineas vacías, me ha ido muy bien, aunque yo lo había resuelto de una
forma, digamos, menos ortodoxa. Y consistía en seleccionar la linea en cuestión y la de abajo,
luego reemplazarlas por la de abajo.
volviendo al ejemplo de arriba:
"La Pera es una fruta nutritiva y muy sabrosa."
"La Manzana es una fruta nutritiva y muy sabrosa."
"La Uva es una fruta nutritiva y muy sabrosa."
Me selecciona las dos ultimas filas, y las reemplaza por la ultima, con lo que ya no queda el
espacio vacío.
En cuanto a seleccionar la fila entera, el enlace que me das se puede adaptar a visual basic,
pero no me acaba de dar el resultado esperado. Seguimos queriendo seleccionar la linea del medio, del ejemplo:
"La Manzana es una fruta nutritiva y muy sabrosa."
Y me selecciona:
La Manzana es una fruta nutritiva y muy sab
como puedes deducir por el tamaño, por algún motivo la iteración se detiene en la linea anterior y la toma como CurrentLine, asignándole el tamaño de esta, a la linea siguiente, que es la que nos interesa.
Así quedo la cosa:
Dim j As Integer = RichTextBox1.Find(lineString, RichTextBoxFinds.WholeWord) For i As Integer = 0 To lineStr.GetUpperBound(0) '- 1 strLine = RichTextBox1.Lines(i).Length If j <> -1 Then strLine = RichTextBox1.Lines(j).Length MsgBox("RichTextBox1: " & RichTextBox1.SelectedText) Dim firstcharindex As Integer = RichTextBox1.GetFirstCharIndexOfCurrentLine() Int(currentLine = RichTextBox1.GetLineFromCharIndex(firstcharindex)) Dim currentlinetext As String = RichTextBox1.Lines(currentLine) RichTextBox1.Select(firstcharindex, strLine) MsgBox("RichTextBox1: " & RichTextBox1.SelectedText) RichTextBox1.SelectedText = "" Me.RichTextBox1.Lines = Me.RichTextBox1.Text.Split(New Char() {ControlChars.Lf}, _ StringSplitOptions.RemoveEmptyEntries) Exit For End If Next
Nota: lineString lo asigna el usuario en un textbox. Un botón desencadena el evento, y lo toma como parámetro.
¿Donde puede estar el fallo?
Saludos.
2010年3月14日 2:29