세부보기 모드의 ListView가 있는데 항목 텍스트의 일부를 굵게 표시하고 싶습니다 (항목 텍스트의 일부 하위 문자열을 찾는 위치를 강조 표시하기 위해).ListViewItem 텍스트의 일부를 굵게 만드는 방법은 무엇입니까?
그래서 이런 식으로 뭔가 :
Somefilename/boldText/등
그렇게 할 수있는 방법이 있습니까?
세부보기 모드의 ListView가 있는데 항목 텍스트의 일부를 굵게 표시하고 싶습니다 (항목 텍스트의 일부 하위 문자열을 찾는 위치를 강조 표시하기 위해).ListViewItem 텍스트의 일부를 굵게 만드는 방법은 무엇입니까?
그래서 이런 식으로 뭔가 :
Somefilename/boldText/등
그렇게 할 수있는 방법이 있습니까?
좋습니다. 에 ListView
을 먼저 입력해야합니다.이 속성을 true
으로 설정하면됩니다. 이제 당신은 당신이 DrawColumnHeader
를 구현하고 거기에이 줄을 배치해야 거라고했던 것을 : 어떤 지역에 따라 하나 DrawItem
또는 DrawSubItem
에,
e.DrawDefault = true;
다음 다음과 같은 코드를 구현해야합니다을 문자열을 파싱하지 않아서 코드를 완벽하게 작성하지 못했다는 점을 염두에 두십시오. 그리고 직접 텍스트를 그리기 때문에 선택한 항목을 그리기 구현해야합니다.
var boldFont = new Font(this.Font, FontStyle.Bold);
var location = new PointF(e.Bounds.Location.X, e.Bounds.Location.Y);
e.Graphics.DrawString("Somefilename/", this.Font, Brushes.Black, location);
var size = e.Graphics.MeasureString("Somefilename/", this.Font);
location.X += size.Width;
e.Graphics.DrawString("boldText", boldFont, Brushes.Black, location);
size = e.Graphics.MeasureString("boldText", boldFont);
location.X += size.Width;
e.Graphics.DrawString("/etc", this.Font, Brushes.Black, location);
주목해야 할 또 다른 점은 어떤 글꼴이 마진이 굵은 글꼴이 더 많은 공간을 차지하기 때문에 당신이 오프셋 조금 플레이해야한다는 것입니다.
Item
다음 바로 DrawSubItem
이벤트에 대한 e.DrawDefault = true;
구현 SubItem
없는 경우 - 항목이 SubItem
다음 DrawItem
동안 그 라인을 구현하는 경우와 VICA 반대를.
감사합니다 :) 이것은 내가 찾고있는 것입니다. 하지만 여전히 문제가 하나 있습니다. 내가 글자를 그릴 때 글자 줄의 의미가 이상하게 보입니다. 녹색 윤곽선이 그려져 있습니다.내가 무엇을 의미하는지 알면 흐리게 보인다. – bakua
'Brushes.Black' 대신에'SystemBrushes.WindowText'를 사용해 볼 수있다. 그러나 그것은 내가 경험하고 있지 않았기 때문에 어둠 속에서 한 발 맞았습니다. –
그것은 도움이되지 않았다. (여기는 화면이 틀렸다. (이 텍스트는 분명히 잘못 작성되었지만,이 항목을 선택하자마자 바로 그 이후 모든 것이 괜찮다.) http://img607.imageshack.us/img607 /7375/screenuoa.png – bakua
OnPaint를 재정의해야합니다. 목록보기는 .NET 프레임 워크에 의해 그려진되지 않고에만 지원됩니다,
Make portion of a Label's Text to be styled bold
을하지만 이러한 링크를 시도하십시오. 따라서 OnPaint를 재정의하더라도 호출되지 않을 수 있습니다. 따라서 목록보기 컨트롤을 재정의해야 할 수도 있습니다.
OnPaint가 도움이되지 않습니다. 이런 일을하기 위해서는 ListView로 많은 작업을해야 할 것입니다. 예를 들어 ObjectListView를보십시오. – Grammarian
맞습니다. OP에서 원하는 텍스트를 그리는 방법을 ** 매우 ** 부분적으로 구현했습니다.하지만 더 많은 작업이 필요합니다. @ 그래미언, 내 게시물에 더 추가 할 수 있으면 언제든지. –
사실, 각 항목에 대해 .UseItemStyleForSubItems = false를 설정해야합니다. 이것은 내 생각에 가장 적합한 대답입니다. – Larry
WPF 또는 WinForms? –
@KlausByskovHoffmann이 묻는 것처럼 Windows 또는 웹입니까? – MaxDataSol
죄송합니다 ... 그 WinForm 앱을 잊어 버렸습니다 – bakua