그래서 Windows Mobile 폰용 C# 프로젝트가 있는데 InputPanel을 사용하려고합니다. 특히, 사용자 입력을 수집하는 레이블 및 텍스트 상자 스택이있는 양식이 하나 있습니다. 나는 사용자가 SIP를 열 때 알려주는 InputPanel을 가지고있다. 지금까지 모든 것이 잘 작동합니다. SIP 상태가 변경되었다는 메시지가 나타나면 Form의 높이를 변경하고 싶지는 않습니다..NET CF - InputPanel 상태를 기준으로 폼 높이를 설정하십시오.
여기 내 InputPanel 내 이벤트 처리기입니다 :
void m_InputPanel_EnabledChanged(object sender, EventArgs e)
{
// :( this assignment operation doesn't work and it doesn't
this.ClientSize = inputPanel1.VisibleDesktop.Size;
// doesn't work
this.Size = inputPanel1.VisibleDesktop.Size;
// assignment operation works, but isn't very useful
this.visibleHeight = inputPanel1.VisibleDesktop.Height;
this.InitializeUI();
}
내가 할당 작업이 작동하지 않습니다 말할 때, 나는 값이 디버거에서 변경되지 않는 것을 의미한다. 어쩌면 내가 폼의 크기를 변경할 수 없다는 것을 이해할 수 있지만 왜 그것을 변경하려고하면 예외를 throw하지 않거나 컴파일러 오류를 제공하는지 이해할 수 없습니다.
내 양식 WindowState를 최대화 대신 보통으로 설정했지만 차이를 만들지 않습니다.
또한이 페이지에서는이 작업을 수행하는 방법을 알려주는 http://www.christec.co.nz/blog/archives/42을 읽었지만 사용자 정의 항목을 사용하기 때문에 모든 컨트롤을 Panel에 쉽게 넣을 수 없습니다. 알파 배경 컨트롤.
내가 테스트중인 장치에는 하드웨어 키보드가 없으므로 규칙 # 1을 위반하지 않도록 할 수 없습니다. TextBox에 포커스가있을 때마다 SIP 팝업을 표시하므로 잘하면 사용자에게 짜증나게하지 않습니다.또한 내 양식의 크기를 조정해야하는 이유는 내 앱이 일반적으로 입력이 필요한 데이터 뷰어이기 때문에 50 % 빈 화면으로 끝나기 때문입니다. 답변 해 주셔서 감사합니다. 패널을 추가하는 것은 내가해야 할 일을 추측하고 있었지만, 기존 코드를 리팩토링하는 것을 의미하기 때문에 정말로 원하지 않았습니다. – thebeekeeper
사용자를 괴롭히는 한 가지 시나리오를 설명 할 수 있습니다. 화면 하단의 TextBox를 클릭하고 SIP가 열리면 방금 클릭 한 TextBox를 덮고 숨기거나 다른 모든 컨트롤을 올려 TextBox 표시되지만 (사용자가 방금 클릭 한 위치에는 더 이상 표시되지 않음) – MusiGenesis
그게 어떻게 짜증나는지 나는 알 수 있지만 대안이 무엇인지 모르겠습니다. 사용자가 입력하는 동안 나는 SIP 아래에 TextBox를 남겨 둘 수 없으며, 상사는 정상적인 작동 중에 화면 절반을 사용하지 않도록하지 않을 것입니다. 이 작업을 정말 잘 수행 한 응용 프로그램의 예를 알고 있습니까? 저는 .NET CF 개발을 처음 접했으므로 자신이하는 일을 알고있는 사람들이 무엇을하고 있는지 알 수있을 것입니다. – thebeekeeper