0
텍스트의 일부분을 색칠합니다. 목록보기 selectedIndex의 이벤트에서richTextBox에서 텍스트의 한 부분 이상을 채색하려고 할 때 전혀 색칠하지 않는 이유는 무엇입니까?
void lvnf_SelectedIndexChanged(object sender, EventArgs e)
{
if (ListViewCostumControl.lvnf.SelectedItems.Count > 0)
{
string word = textBox1.Text;
string[] test = word.Split(',');
foreach (string myword in test)
{
richTextBox1.Text = File.ReadAllText(ListViewCostumControl.lvnf.Items[ListViewCostumControl.lvnf.SelectedIndices[0]].Text);
FileInfo fi = new FileInfo(ListViewCostumControl.lvnf.Items[ListViewCostumControl.lvnf.SelectedIndices[0]].Text);
HighlightPhrase(richTextBox1, myword, Color.Yellow);
if (myword == "Form1")
{
break;
}
}
}
}
그리고 난이 브레이크 부품 추가
static void HighlightPhrase(RichTextBox box, string phrase, Color color)
{
int pos = box.SelectionStart;
string s = box.Text;
for (int ix = 0; ;)
{
int jx = s.IndexOf(phrase, ix, StringComparison.CurrentCultureIgnoreCase);
if (jx < 0) { break; }
box.SelectionStart = jx;
box.SelectionLength = phrase.Length;
box.SelectionColor = color;
ix = jx + 1;
}
box.SelectionStart = pos;
box.SelectionLength = 0;
}
:을 Form1로하여 RichTextBox에있는 모든 장소를 착색한다 일하고
if (myword == "Form1")
{
break;
}
합니다. 하지만이 중단 부분을 제거하면 문자열 배열 변수 테스트에서 텍스트가 존재하는 richTextBox의 모든 위치에 색을 표시해야합니다. Form1을 Form2를, 하이, 44
을하지만 아무 것도 색칠하지 아니에요 : 테스트에서
내가있다. 당신이 if (myword == "Form1") break;
부분을 제거하면
'richTextBox1.Text = File.ReadAllText (..'이 항상 모든 텍스트를 대체 할 ?? 보자 몇 가지 가정을 만들기
, 나는 당신의 코드를 변경할 것 그 규칙을 잘 알고 있는지 확인하기 위해서 : : 포맷 된 텍스트의 Text 속성을 수정하지 마라 !! 텍스트가 포맷 될 때 항상 특별한 명령을 사용하라 : SelectedText = .., AppendText (.. and 붙여 넣기 (.. – TaW
@TaW Working. 루프를 실행하면 ReadAllText가 작업을 수행했습니다. 감사합니다. –