2009-11-19 7 views
4

프로그래밍 방식으로 CheckBox에서 click 이벤트를 생성하는 방법이 있습니까? 나는 Button.PerformClick()과 동등한 것을 찾고있다.프로그래밍 방식으로 CheckBox를 클릭하십시오.

+0

제프가 제안하지 않았으므로 체크 된 속성이 변경되고 있습니까? 당신은 정교 할 수 있습니까? –

+0

ASP.net 또는 Windows Forms? – Fandango68

답변

9

왜 클릭 시뮬레이션을해야합니까?이 코드는 사용자의 필요에 맞지 않습니까? 당신이 체크 박스의 상태가 변경 될 때 로직을 실행해야하는 경우

myCheckBox.Checked = !myCheckBox.Checked; 

대신 ClickCheckedChanged 이벤트를 사용해야합니다.

private void CheckBox1_CheckedChanged(Object sender, EventArgs e) 
{ 
    MessageBox.Show("You are in the CheckBox.CheckedChanged event."); 
} 
+1

나는 이것을 게시했으나 질문은 "click event"라고 말한다. 그러면 클릭 이벤트가 생성되지 않습니다. –

+1

아마도 컨트롤을 리팩토링하고 CheckedChanged 이벤트를 사용합니다. 더 쉬워 질 것입니다. – Grzenio

+0

OP는 이것이 실제로 대답에 선택되지 않은 이유를 설명 할 수 있습니까? 그것은 onclick 이벤트를 해고하는 것입니다. – Fandango68

1
나는 순간에 적절하게이 문제를 연구 할 수 있도록 나는 아직도 새로운 워크 스테이션을 설정하려고하지만 UI Automation와 아마 체크 박스가 IInvokeProvider하고 Invoke 방법을 사용할 수를 지원 가능

?

0

checkBox_Click 이벤트 핸들러를 직접 호출하지 않고도 이러한 방식으로 click 이벤트를 생성 할 수 있다고 생각하지 않습니다. 하지만 이렇게 할 수 있습니다 :

checkBox.Checked = !checkBox.Checked; 

CheckedChanged 핸들러는 여전히이 작업을 수행해도 호출됩니다.

2

왜 CheckBox에서 클릭 이벤트를 생성 하시겠습니까?

theCheckBox.Checked = !theCheckBox.Checked; 

하면 Click 이벤트에 연결되어있는 일부 기능을 트리거 할 경우, 그것은으로 Click 이벤트 핸들러에서 밖으로 코드를 이동하는 더 좋은 생각이있다 :

당신이 그것을 전환하려면

값입니다 어디에서 호출 할 수있는 별도의 방법 : 당신이 그런 식으로 코드를 디자인

private void theCheckBox_Click(object sender, EventArgs e) 
{ 
    HandleCheckBoxClick((CheckBox)sender); 
} 

private void HandleCheckBoxClick(CheckBox sender) 
{ 
    // do what is needed here 
} 

, 당신은 쉽게 어디서든 기능을 호출 할 수 있습니다

,
HandleCheckBoxClick(theCheckBox); 

대부분의 제어 이벤트 핸들러에서 동일한 접근 방식을 사용할 수 있습니다. 가능한 한 많은 코드를 이벤트 처리기에서 더 재사용 가능한 메소드로 이동하십시오.

+0

나는 ... _ Click 이벤트 처리기에 포함 된 컨트롤 중 일부를 사용할 수있는 불쾌한 Form을 테스트하려고합니다. – Grzenio

+1

체크 상자를 클릭 할 때 두 번 호출되므로 CheckBox_Click 및 CheckBox_CheckedChanged에서이 메서드를 호출하지 않으려 고 조심하십시오. –

+1

@Grzenio : CheckBox의 '클릭'컨트롤을 활성화/비활성화하는 것은 좋은 생각이 아닙니다. 코드에 의해'Checked' 속성이 지정되면 어떻게 될까요? 그러면'Click' 이벤트가 발생하지 않고 UI가 일관성없는 상태가됩니다. 아마도 'CheckedChanged' 이벤트의 결과로 그 코드가 실행되도록해야합니다. –

3

위의 솔루션은 Checkbox.CheckedChanged 이벤트를 호출합니다.

명시 적으로 당신이 할 수있는 이벤트를 클릭 통화 할 경우 : 당신은 CheckBox 컨트롤의 어떤 종류를 지정하지 않을

checkBox1_Click(checkBox1, null); 
+0

답변이 있어야합니다. – Fandango68

0

합니다. ASP.net 또는 Windows?

웹 체크 박스 컨트롤을 가정하면 코드 숨김 내에서 자바 스크립트 호출을 사용하여 웹 체크 박스 컨트롤을 해제하는 방법입니다.당신의 웹 양식 1 스크립트 관리자를 추가하고 너무

1 개 버튼을 추가하여 자바 스크립트 코드를 추가

<script type="text/javascript" language="javascript"> 
    function Func() { 
     alert("hello!") 
    } 
</script> 

2 단계

1 단계 뒤에 코드에서 자바 스크립트 함수를 호출

3 단계 단추 클릭 이벤트에이 코드 추가

ScriptManager.RegisterStartupScript(this.Page, Page.GetType(), "text", "Func()", true); 
관련 문제