2012-10-06 3 views
2

그래서 나는 창문 양식 응용 프로그램이 있습니다. 선택할 식료품 품목을 알려주는 텍스트 상자가 있습니다. 당신이 선택할 수있는 3 개의 라디오 버튼 대답과 그 대답을 제출하는 버튼이 있습니다. 내가 원하는 것은 탭을 사용하여 라디오 버튼을 탐색 할 수 있어야한다는 것입니다. 탭 주문을 시도했지만 작동하지 않습니다. 어떤 제안?라디오 버튼이있는 C# 탭 순서

+1

대신 왜 드롭 다운 목록을 사용하지 않습니까? 더 맞는 소리. – SimpleVar

+0

KeyPress 이벤트에서 탭 키를 트랩하고 직접 처리 할 수 ​​있습니다. 또는 라디오 버튼 클래스에서 상속 받고 탭 키를 처리하도록 확장합니다. –

+0

이것은 라디오 버튼의 기본 동작입니다. 이를 변경하려면 서브 클래스를 작성하고 키보드 동작을 다시 구현해야 할 수도 있습니다. 아니면 자신의 라디오 버튼을 만들 수도 있습니다. –

답변

1

Windws Forms에서는 그룹으로만 탭할 수 있습니다. 해킹하는 방법 중 하나는 그룹 상자를 각 그룹 주위에 두어 별도의 그룹에있는 모든 버튼을 가져 오는 것입니다.

탭을 통과 할 수 있지만 이제는 연결이 해제되어 자동으로 선택이 취소되지 않습니다. 이렇게하려면 선택 영역에서 실행되는 이벤트에 등록하고 다른 영역에서는 프로그래밍 방식으로 선택을 취소하십시오.

namespace WindowsFormsApplication1 
{ 
    public partial class Form1 : Form 
    { 

     private List<RadioButton> allMyButtons; 

     public Form1() 
     { 
      InitializeComponent(); 
      allMyButtons = new List<RadioButton> 
      { 
       radioButton1, 
       radioButton2 
      }; 
     } 

     private void radioButton_CheckedChanged(object sender, EventArgs e) 
     { 
      RadioButton sendingRadio = (sender as RadioButton); 
      if(sendingRadio == null) return; 
      if(sendingRadio.Checked == true){ 
       foreach(var rb in (from b in allMyButtons where b != sendingRadio select b)) 
       { 
        rb.Checked = false; 
       } 
      } 
     } 

    } 
} 

나는이 접근법을 테스트했고 그 일을하는 것으로 보인다.

양식은 현대적인 방식으로 수행되지 않습니다. 새 프로젝트를 위해 WPF로 이동하는 것을 고려하십시오.