올바른 구문은 다음과 같습니다 당신이 제어 필드 사이의주기에 Shift+Tab
을 눌러 구현하려는 귀하의 코멘트에 비추어
SendKeys.Send("+{Tab}");
는,이 키를 모방하지 않고 더 안정적으로 수행 할 수 있습니다. 이렇게하면 예를 들어 다른 창에 포커스가있는 문제를 피할 수 있습니다.
다음 방법은 Shift_Tab의 동작을 에뮬레이트은 탭을 통해 순환하는 역순으로 중지 :
void EmulateShiftTab()
{
// get all form elements that can be focused
var tabcontrols = this.Controls.Cast<Control>()
.Where(a => a.CanFocus)
.OrderBy(a => a.TabIndex);
// get the last control before the current focused element
var lastcontrol =
tabcontrols
.TakeWhile(a => !a.Focused)
.LastOrDefault(a => a.TabStop);
// if no control or the first control on the page is focused,
// select the last control on the page
if (lastcontrol == null)
lastcontrol = tabcontrols.LastOrDefault();
// change focus to the proper control
if (lastcontrol != null)
lastcontrol.Focus();
}
편집
삭제 된 텍스트 것이다 컨트롤을 통해주기 역순으로 (Shift + Tab을 에뮬레이션) 내장 된 이 충족되면 더 정확하게 처리됩니다. 벽돌 상자. 다음 방법은 Shift_Tab의 동작을 에뮬레이트하여 역순으로 탭 정지를 반복합니다.
void EmulateShiftTab()
{
this.SelectNextControl(
ActiveControl,
forward: false,
tabStopOnly:true,
nested: true,
wrap:true);
}
출처
2013-05-14 13:05:26
drf
어떻게 작동하나요? 발사하지 않니? 그들이 실제로 발사하지 않는다는 것을 어떻게 확인 했습니까? "일하지 않는 것"은 문제를 설명 할 수있는 최악의 방법입니다. – tnw
_it이 작동하지 않는다는 것은 무엇을 의미합니까? 어떻게 테스트하고 있습니까? – gideon
+ {TAB}이 (가) 올바른 구문이고 + {TAB 1}도 작동해야합니다. 다른 사람들은 다른 것을 할 것입니다. ('+ (Tab)'은 shift,'T','A'와'B' 키를 동시에 보내고'{+} {Tab}'은'+ '키 다음에'Tab'을 보낼 것입니다. 그것은 포커스를 설정할 요소에'.Focus()'호출이 옵션이 아닌 것으로 가정하는 것이 옳은가? – drf