2017-10-06 2 views
-4

저는 배포 할 터치 스크린 컴퓨터의 필요에 맞게 가상 키보드를 제작하고 있습니다. 내가 키보드에 대한 팝업 창을 사용하고 있습니다 및 다음과 같은 모든 숫자 버튼을 연결할 수 있었다, 여기에 내가 (모든 입력 버튼 클릭을 처리)을 one_click 함수의 첫 번째 줄에 내 가상 키보드 클래스창이 튀어 나올 때 텍스트 상자의 초점을 유지하는 방법

public partial class NumKeypad : Window 
{ 
    withoutB withoutbvn; 
    enterBvn ebvnn; 
    public NumKeypad() 
    { 
     InitializeComponent(); 
    } 

    public NumKeypad(withoutB wobvn) 
    { 
     InitializeComponent(); 
     withoutbvn = wobvn;    
    } 

    private void one_Click(object sender, RoutedEventArgs e) 
    { 
     var focusedElt = FocusManager.GetFocusedElement(withoutbvn); 
     var tbox = focusedElt as TextBox; 
     try 
     { 
      withoutbvn.ph.Text += (((sender as Button).Content as Border).Child as TextBlock).Text;//this works, but this is assigning directly to only one control. i want to assign to whatever control that has focus 
     } 
     catch (Exception ex) 
     { 

     } 
    } 
} 

입니다 인스턴스가 "withoutbvn"인 페이지에서 현재 포커스 된 요소에 대한 참조를 얻으려고합니다. 두 번째 줄에 , 나는 텍스트 속성을 쓸 수 있도록 요소를 텍스트 상자로 변환하려고합니다. 하지만 그것은 null을 반환 유지합니다. 이 팝업창이 뜨면 (키보드 팝업 창이 올라옵니다. 텍스트 상자 나 다른 입력 요소가 포커스를받을 때 팝업 창을 띄웁니다.) 포커스가있는 텍스트 상자에 대한 참조를 얻을 수 없어 글을 쓸 수 없습니다. 어떻게 팝업 텍스트 창에 팝업 텍스트 상자를 할당 할 수 있도록 포커스가있는 텍스트 상자가 포커스를 유지하는지 확인하십시오. 또는이 작업을 수행하는 더 좋은 방법이 있다면 pls가 올바른 방향으로 나를 안내합니다. 감사합니다

+0

너 혼자서 만들 수 없습니까? –

+0

다음을 참조하십시오 : https://www.codeproject.com/Articles/145579/A-Software-Virtual-Keyboard-for-Your-WPF-Apps – tabby

+0

@MarcoSalerno 나는 지금 그 일을하려하지만 문제가 있습니다. 키보드 (팝업 창)에서 버튼을 클릭하면 부모 윈도우에있는 텍스트 상자의 텍스트를 버튼에 의해 전달 된 값으로 설정하는 방법 –

답변

0

나는 WPF이 키보드를 사용했습니다 :

keyboard control wpf

그것은 당신 소원을 사용자 정의 할 수 있습니다 팝업 컨트롤입니다. 당신은 전체 코드를 가지고 있으며 무료입니다. 제 경우에는 팝업 (레이아웃과 독일어 글자를 추가)을 조정해야했고 매우 직설적이었습니다.

나는 또한 숫자 키보드를 보여야했고, 동일한 키보드를 사용했지만 더 간단한 레이아웃을 사용했습니다. 뒤에는 모든 것이 매우 간단합니다. 그리드에서 키를 정의하고, 원하는 위치에 배치하고, 해당 가상 키 코드를 클릭하여 생성해야합니다.

0

키보드를 만들기 위해 팝업 컨트롤을 사용하고, 모든 키를 생성하는 버튼을 사용하고 모든 입력 버튼에 하나의 이벤트 핸들러를 연결 한 다음 백 스페이스 및 입력 버튼에 다른 이벤트 핸들러를 연결했습니다. 문자, 숫자 또는 기호 버튼을 클릭하면 다음 함수가 호출됩니다.

try 
     { 
      IInputElement focusedControl = Keyboard.FocusedElement; 
      var foc = focusedControl as TextBox; 
      foc.Text += (((sender as Button).Content as Border).Child as TextBlock).Text; 
     } 
     catch (Exception) 
     { 

     } 

단추의 텍스트를 포커스가있는 컨트롤에 삽입합니다. 이것은 꽤 기본입니다. 내가 이것을 어떻게 확장 할 수 있는지에 대한 더 많은 제안을 고맙게 생각합니다. 감사합니다

관련 문제