2017-10-30 14 views
1

this guy과 같은 문제가 있지만 그의 게시물은 2 세이므로 새로운 것을 열 수 있다고 생각했습니다.Windows.Forms 니모닉이 작동하지 않습니다

프로그램에서 나는 레이블을 사용하고 발견 한대로 mnemonics on labels trigger the enter event of the next control in the tab order입니다. 따라서 clickenter 메소드가 구현되었습니다. 그러나 여기에 문제가 있습니다. 테스트 프로그램을 만들었습니다. 이 프로그램은 단추와 텍스트 상자라는 두 개의 레이블로 구성되어 있습니다.

test program layout

test program tab order

두 번째 레이블은 enter 이벤트가 발생하면 바로 제어하는 ​​것입니다. ALT을 누르면 밑줄이 잘 표시되지만 두 번째 키 (Reset)를 누르면 아무 일도 발생하지 않습니다. 또한 밑줄이 나타나고 ALT 키를 다시 누르면 그는 사라지지 않으며 ALT을 눌렀다면 button은 완전히 무시됩니다. VisualStudio 2013을 사용하여 다른 PC로 이동했지만 동일한 결과가 나타납니다. VisualStudio 2017을 다운로드하고 새 프로그램을 만들려고했습니다 =>는 작동하지 않습니다.

영어가 내가 가장 잘 알고있는 언어가 아니므로, 내가 잘못 생각할 때 힌트를 줄 수 있다면 기쁩니다. 누군가 나를 도울 수 있기를 바랍니다.

Form1.cs를

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

namespace WindowsFormsApplication1 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void reset_Click(object sender, EventArgs e) 
     { 
      textBox.Text = ""; 
     } 

     private void button_Click(object sender, EventArgs e) 
     { 
      textBox.Text = "Button"; 
     } 

     private void nothing_Enter(object sender, EventArgs e) 
     { 
      textBox.Text = "nothing"; 
     } 
    } 
} 

Form1.designer.cs입니다은

 this.reset.Click += new System.EventHandler(this.reset_Click); 
     this.button.Click += new System.EventHandler(this.button_Click); 
     this.nothing.Enter += new System.EventHandler(this.nothing_Enter); 
+2

너무 많은 텍스트입니다. 게시물을 최대한 줄여서 핵심 정보 만 제공하여 문제를 이해하고 재구성하십시오. –

+0

나는 그것을 할 것이다. – John

+0

이제 더 나아 졌습니까? – John

답변

1

당신이 레이블에 연상 기호를 사용 - 포커스는 더 높은 탭 형태의 다음 선택 객체로 이동 인덱스 (탭과 같이 다음 선택 가능한 컨트롤로 줄 바꿈하지 않음). 기본적으로 라벨을 선택할 수 없기 때문에 라벨 재설정 후 선택할 수있는 컨트롤이 없으므로 아무 것도 나타나지 않습니다.

높은 탭 인덱스를 가진 다른 선택 가능한 컨트롤을 추가하면 (예 : 탭 인덱스 값이 4 인 텍스트 상자) Alt-r을 누르면 해당 컨트롤이 예상대로 이동합니다.

레이블을 선택할 수 있도록하려면 여기에 표시된 대답과 같이 파생 클래스를 만들 수 있습니다 : Make label participate in control tabbing - "아무것도"레이블을 선택 가능 레이블로 설정 한 경우 Alt-r을 누르면 포커스가 그 레이블.

+0

답변 해 주셔서 감사합니다. 나는 너와 포스트가 묘사 한 것처럼했다. 그것은 일했지만 단지 한 번만했습니다. 한 번만 ALT + R을 누를 수 있습니다. 그 후에 ALT + R을 다시 사용하려면 마우스로 단추를 클릭해야합니다. – John

+0

니모닉은 설정되어있는 컨트롤에만 적용되므로 Alt-r은 "Reset"레이블에서 "nothing"레이블로 이동합니다 (사용자가 선택 가능 레이블이라고 가정 한 경우). alt-r을 누른 후 alt 키를 누른 후 이미 존재하는 "아무것도"레이블로 계속 이동하기 때문에 -r을 여러 번 사용해도 효과가없는 것으로 보입니다. 탭 또는 탭으로 이동하여 "재설정"레이블 (또는 클릭하여 제어 도구 선택) 및 Alt-r을 누르면 "아무것도"레이블로 다시 이동합니다. – PaulF

+0

그래서 ALT + R을 누른 후에 ALT + B를 눌러도 포커스는 아무 것도 붙지 않습니다. – John