내 Windows 양식 프로젝트에서 특정 양식에 문제가 있습니다. 하나의 양식 만 문제가 있습니다. 이 문제가없는 동일한 유형의 참조를 사용하는 몇 가지 다른 방법이 있습니다.Windows Form 컨트롤이 코드로 인해 업데이트되지 않는다
코드 숨김을 통해 컨트롤을 수정해도 양식에서 실제로 컨트롤이 업데이트되지 않는 것이 문제입니다. 데이터베이스에서 가져온 값을 (.Items.Add()
메서드를 통해) 콤보 상자의 Items 컬렉션에 추가하는 것부터 텍스트 상자 또는 확인란을 설정하거나 해제하도록 설정, 텍스트 상자의 텍스트 또는 체크 된 상태 확인에 이르기까지 상자 ... 아무것도 작동하지 않습니다. 어떤 컨트롤에 대해 활성화 된 상태를 실제로 설정하는 코드를 제외하고 모든 메서드에서 모든 코드를 주석 처리 해 보았습니다. 아무 것도 알지 못하고 실행되고 있지 않은지 확인하기 위해 문제가 여전히 발생합니다.
활성화 상태를 변경하는 코드는 디버거가 표시 할 때 분명히 히트되며 조건에 따라 true 또는 false 여부에 관계없이 Enabled 상태가 올바르게 설정됩니다. 비활성화해야하는 컨트롤은 여전히 편집 가능하며 편집 가능한 것처럼 보입니다. 코드는 원래 컨트롤 이름을 자동으로 채우기 위해 intellisense를 사용하여 작성되었으므로 코드에서 폼의 올바른 컨트롤로 연결하는 데 문제가 없어야합니다. 또한 양식을 더 크게 만들고 빈 패널을 놓고 새로운 텍스트 상자와 확인란을 표시하고 같은 방법으로 패널을 설정하거나 해제하도록 설정했으며 컨트롤을 실행했을 때도 그렇지 않았습니다. 코드 뒤에 변경.
내가 누락 될 수있는 것에 대한 제안 사항이 있으십니까? 이것은 Windows 양식의 기본 기능으로 무엇이 문제인지 전혀 모르고 있으며 Google 검색 또는이 사이트 검색으로 비슷한 문제를 찾을 수 없습니다.
감사합니다.
편집 : 다음은 작동해야하지만 작동하지 않는 코드 샘플입니다. 비슷한 코드가 문제없이 몇 가지 다른 형식으로 사용됩니다. chkDisable라는 체크 박스가 선택되어
이 이벤트가 실행됩니다
private void chkDisable_CheckedChanged(object sender, EventArgs e)
{
SetControlsEnabledStatus(!((CheckBox)sender).Checked);
}
private void SetControlsEnabledStatus(bool enabledStatus)
{
textBox1.Enabled = enabledStatus;
textBox2.Enabled = enabledStatus;
}
나는이 사건이 제대로 발사 것을 제대로 연결되어 있음을 100 % 확신하고 텍스트 상자의 사용 가능 상태가 올바르게 설정되어 있는지 . 이 메서드를 덮어 쓸 수있는 코드의 주석을 제거한 다른 메서드는 없습니다. 그러나 확인란을 클릭 한 후 양식이 다시로드되는 즉시 텍스트 상자가 항상 활성화됩니다.
EDIT2가 : 경우 사람이 내 문제를 일으키는 것입니다 여기에, 자신의 문제를이 건너 온다 :
드디어이 아래로 추적 얻을 수있는 새로운 형태에 처음부터 다시 시작해야했다. 생성자와 FormLoad 이벤트에서 InitializeComponent()에 대한 호출이 있음이 밝혀졌습니다. 기본적으로, 나는 Disable 이벤트 만 실행하면서 동일한 컨트롤을 가진 새로운 폼을 만들었고, Load 코드를 복사 할 때 Disable은 작동을 멈췄습니다.
코드를 표시 하시겠습니까? – Likurg
... 가능하면 * .Designer .cs 파일도 있습니다. – Alan
@Likurg, 코드 샘플을 추가했습니다. – Greg