2017-05-20 1 views
1

내 자신의 프로젝트에 대한 사용자 정의 라디오 버튼 컨트롤을 만들고 싶습니다. 이 컨트롤에는 사용자 지정 표시기가 있어야합니다 (일반 라디오 단추 표시기는 점으로 지루합니다 : D). 표시기는 문자열이며 글리프 글꼴을 사용합니다. 사용자 정의 라디오 버튼 컨트롤 (WinForms)

는 이미 컨트롤을 상속 및 사용자 정의 페인트 방법을 사용하려고하지만 내가 얻을 것은 like this. 내 코드가
Protected Overrides Sub OnPaint(e As PaintEventArgs) 
    MyBase.OnPaint(e) 
    e.Graphics.DrawString(Icons, x, y, z) 
    SetStyle(ControlStyles.UserPaint, True) 

End Sub 

도 같은 효과를 사용하여이

Public Class Component1 
Inherits RadioButton 
Private Icons As String = "ABC  XGTDJS" 
Private Captions As String 

Dim x As New Font("Segoe UI", 10) 
Dim y As New SolidBrush(Color.Black) 
Dim z As New Point(0, 0) 

Private Sub Component1_Paint(sender As Object, e As PaintEventArgs) Handles Me.Paint 
e.Graphics.DrawString(Icons, x, y, z) 

End Sub 
End Class 

입니다했습니다.

그래서이 컨트롤을 처음부터 다시 만들 생각입니다. 내 질문 :

  • RadioButton 컨트롤을 완전히 사용자 정의 할 수 있습니까?
  • 나는 이미 위의 기대를 충족시키는 사용자 지정 체크 박스 컨트롤을 만들었습니다. 예를 들어, 세 개의 체크 박스가있는 경우 모두 체크 할 수 있습니다. 하지만 3 개의 라디오 버튼이 있다면, 물론 모든 것을 확인할 수는 없습니다. 이 효과는 어떻게 얻을 수 있습니까? 체크 박스 1, 체크 2 및 체크 3을 체크하지 않은 경우 수동으로 프로그래밍 할 수 있음을 알고 있지만 실행 가능하지 않습니다. 더 잘 사용하는 기본 양식이 방법이 더 깔끔하고 좋은 것 있도록 UserControl을 레벨에서 수행 될 것이다 : D 내 영어 나쁜 경우

죄송합니다 : D

답변

0

처음부터 만들 필요가 없습니다, 당신은 실종 한 뭔가가있다. 이것에 대해서는 아무 것도 할 수 없습니다.

그러나 두 번째 예에서 명시 적으로 원래 라디오 버튼 그릴을 말씀 : 당신은 본질적으로 RadioButton.OnPaint() 메소드를 호출 MyBase.OnPaint()를 호출하여

Protected Overrides Sub OnPaint(e As PaintEventArgs) 
    MyBase.OnPaint(e) 
    ... 
End Sub 

을 (당신의 제어가 그것에서 상속되기 때문에, 그것의 기초는 RadioButton입니다) 그러면 원본 라디오 버튼이 그려집니다.

통화를 제거하면 잘 보내야합니다. 또한 페인트 할 때마다 SetStyle()을 호출하지 말고 생성자에서 호출하면됩니다 (지금은 호출 할 필요가 없으므로 제거하십시오).

그 여기에 OnPaint 방법은 같아야 무엇 말했다 갖는

Protected Overrides Sub OnPaint(e As PaintEventArgs) 
    e.Graphics.DrawString(Icons, x, y, z) 
End Sub 
+0

이봐! 답변 주셔서 감사합니다! 그건 내 문제를 해결 : D – Dhika

+0

@Dhika : 다행스럽게 도울 수있어! 행운을 빕니다! –

0

당신은 확인하여이 효과를 얻을 수 있습니다 Parent.Controls 컬렉션 Parent.Controls 컬렉션에 같은 형식의 다른 컨트롤이 있는지 확인한 다음 필요한 bahavior를 처리해야합니다. 그래서 당신의 첫 번째 예는 항상 정규 라디오 버튼을 그릴 것이라고 Paint 이벤트가 OnPaint 방법으로 발생

:

관련 문제