타사 컨트롤 (ComponentOne)을 사용하고 있으며 간헐적으로이 일반적인 이미지와 같은 일반적인 빨간색 X 상자가 나타납니다. 처음에는 GDI 누출이 있다고 생각했기 때문에 다리 작업을 한 후에 컨트롤을 그릴 때 내 GDI 번호가 유효하다는 것을 확인했습니다. Winform에 빨간색 X 예외가 있습니다.
주변에 인터넷 검색 후 나는 이런 종류의 오류는 늘 그것을 잡을, 렌더링하는 컨트롤을 호출 할 때 내가 시도 및 캐치를 넣어 경우에도 그러므로의 OnPaint() 이벤트에서 발생하고 있음을 발견했다.그럼 내 다음 단계는 내 코드에있는 것입니다.
protected override void OnPaint(PaintEventArgs e)
{
try
{
base.OnPaint(e);
}
catch (Exception ex)
{
this.Invalidate(); //attempt to redraw the control
XmSam.Log(ex);
}
}
는 그 트릭을 할해야한다고 생각하지만, 나는이 문제에 모든 시간을 다시 만들 수 없으며, 그래서 나는 아직 완전히 위의 코드를 테스트 할 수 없었다. 내 질문에, 내 컨트롤을 렌더링하고 예외가있는 경우이 코드는 컨트롤을 다시 그리기 시도합니다. 이것이 무한 루프에 걸려 내 UI가 정지됩니까? 또는 예외를 일으키는 원인이 무엇이든간에 두 번째 컨트롤을 다시 그리면 괜찮을 것이라고 생각하나요?
'Invalidate()'는 메시지 대기열에 다시 그리기 요청을 게시하기 때문에 (대략적으로) 동 기적으로 다시 그리지 않기 때문에 UI를 고정시키지 않습니다. 그러나 말했듯이 두 번째 및 후속 다시 그리기에 예외가 발생할 수 있습니다. 나는 그 예외가 무엇이고 무엇이 그것을 일으키는 지 조사 할 것을 제안합니다. –
공식 지원 포럼에서 컨트롤을 발견 한 곳을 더 잘 묻는 것이 좋습니다. – RoadieRich
뭔가가 HeaderCell.Paint 이벤트에서 null입니다. 우리는 그것을 볼 수 없다. – LarsTech