2011-12-12 4 views
0

나는 새로운 형태의 윈도우를 datagridview로 여는 콤보 박스가 있는데, 사용자가 콤보 박스를 통하지 않고 그 데이터 글보기를 통해 항목을 선택하기를 원합니다. 나는 그것을 달성하기 위해이 코드를 가지고 :콤보 박스 취소 드롭 다운

private void comboBox1_DropDown(object sender, EventArgs e) 
    { 
     valSel.incBox = (ComboBox)sender;    
     valSel.Show(); 
     if (this.comboBox1.DroppedDown) 
     { 
      MessageBox.Show("test"); 
      SendMessage(this.comboBox1.Handle, CB_SHOWDROPDOWN, 0, 0); 
     } 
    } 

당신은 내가 또한 콤보 상자의 드롭 다운을 숨길려고하지만이 작동하지 않습니다시피. 나는 그것이 실제로 콤보 박스가 아직 "떨어 뜨린"것이 아니기 때문에 그것이 코드의 일부가 결코 실행되지 않을 것이라고 생각한다. 콤보 상자가 완전히 "내려 가서"닫을 때 이벤트를 다시 닫을 수있는 메시지를 보낼 수 있습니까?

+0

가 false로 콤보 상자의'Enabled' 속성을 설정할 수 없습니다 2) 코드를 작성? – Otiel

답변

2

ComboBox의 높이를 단순히 아주 작게 설정할 수 있어야합니다. 내가 마지막으로 보았을 때, 이는 팝업 파트의 높이를 결정했습니다 (컨트롤의 실제 높이는 UI/글꼴 크기에 의해 결정됩니다).

그러나 더 우아한 방법은 드롭 다운 상자의 모양을 모방 한 사용자 지정 컨트롤을 사용하는 것입니다 (나는 쉬운 방법으로 할 수 있다고 확신합니다).

+0

+1 다른 컨트롤을 사용합니다. 콤보 박스는 당연히 올바른 해결책이 아닙니다. 사용자 정의 컨트롤에 래핑 된 레이블이있는 레이블이 훨씬 좋습니다. –

0

comboBox1.Enter 조건이 충족되면 다른 컨트롤에 포커스를 설정하십시오.

private void comboBox1_Enter(object sender, EventArgs e) 
    { 
     if (comboBox1.Items.Count < 1) 
     { 
      comboBox1.DroppedDown = false; 
      comboBox2.Focus(); 
      MessageBox.Show("Select a list first"); 
      comboBox2.DroppedDown = true; 
     } 
    } 
0

1) 등록 정보에서 ComboBox에 대한 KeyPress 이벤트를 만듭니다.

private void cmbClientId_KeyPress(object sender, KeyPressEventArgs e) { ((ComboBox)sender).DroppedDown = false; }

관련 문제