2010-06-01 7 views
2

그래서 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에 쉽게 넣을 수 없습니다. 알파 배경 컨트롤.

답변

4

FormBorderStyleNone으로 설정되어 있지 않으면 .NET CF에서 양식의 높이와 너비를 변경해도 아무런 효과가 없습니다.

그러나 실제로는 경계선없는 양식이 필요하지 않으므로 이렇게하는 것은 좋지 않습니다. 귀하의 경우에해야 할 일은 Panel (귀하의 양식에 앉아 있음)에 모든 컨트롤 (레이블 및 텍스트 상자)을 넣은 다음 SIP가 열리고 닫히는대로 패널의 크기를 조정하는 것입니다.

편집 : Windows Mobile에서 이러한 종류의 인터페이스를 보았으므로 원치 않는 UI 조언을 제공합니다. .NET CF 어플리케이션을 사용하는 제 1 번 규칙은 "어떤 상황에서도 SIP를 절대 사용하지 마십시오"입니다. 물론 SIP는 스타일러스 없이는 완전히 사용할 수 없으며, 에는 스타일러스가 사용되지 않습니다. 특히 정렬이 약간 벗어난 화면의 경우 특히 그렇습니다.

규칙 1을 위반해야한다면 (물론 대부분의 자유 형식 텍스트 입력에 대해이 규칙을 어겨야합니다.) 사용자 인터페이스는 최소한 사용자에게 예의를 유지해야하며 두 가지를 수행해야합니다.

  1. SIP 열기 및 닫기에 대한 응답으로 서식의 크기와 크기를 계속 변경하지 마십시오. 양식에 SIP가 필요한 경우 하단에 영구 공간을 두어 조정하십시오.
  2. 사용자가 SIP를 열고 닫지 않도록하십시오. 양식에 SIP가 필요한 경우 양식이로드 될 때 SIP를 열고 양식이 닫힐 때 SIP를 닫습니다.

마지막으로 일반적으로 this과 같은 정적 메서드를 사용하면 각 양식에 InputControl을 추가하는 것이 더 쉽습니다. 나는 InputControls가 고통 스럽다는 것을 안다. 그리고 때때로 InputControl이 하나 이상있는 폼을 동시에 열면 서로의 방식으로 연결된다.

+0

내가 테스트중인 장치에는 하드웨어 키보드가 없으므로 규칙 # 1을 위반하지 않도록 할 수 없습니다. TextBox에 포커스가있을 때마다 SIP 팝업을 표시하므로 잘하면 사용자에게 짜증나게하지 않습니다.또한 내 양식의 크기를 조정해야하는 이유는 내 앱이 일반적으로 입력이 필요한 데이터 뷰어이기 때문에 50 % 빈 화면으로 끝나기 때문입니다. 답변 해 주셔서 감사합니다. 패널을 추가하는 것은 내가해야 할 일을 추측하고 있었지만, 기존 코드를 리팩토링하는 것을 의미하기 때문에 정말로 원하지 않았습니다. – thebeekeeper

+0

사용자를 괴롭히는 한 가지 시나리오를 설명 할 수 있습니다. 화면 하단의 TextBox를 클릭하고 SIP가 열리면 방금 클릭 한 TextBox를 덮고 숨기거나 다른 모든 컨트롤을 올려 TextBox 표시되지만 (사용자가 방금 클릭 한 위치에는 더 이상 표시되지 않음) – MusiGenesis

+0

그게 어떻게 짜증나는지 나는 알 수 있지만 대안이 무엇인지 모르겠습니다. 사용자가 입력하는 동안 나는 SIP 아래에 TextBox를 남겨 둘 수 없으며, 상사는 정상적인 작동 중에 화면 절반을 사용하지 않도록하지 않을 것입니다. 이 작업을 정말 잘 수행 한 응용 프로그램의 예를 알고 있습니까? 저는 .NET CF 개발을 처음 접했으므로 자신이하는 일을 알고있는 사람들이 무엇을하고 있는지 알 수있을 것입니다. – thebeekeeper

관련 문제