Семафор или взаимное исключение являются, вероятно, лучшим способом пойти, но вместо занятого цикла, просто использовать setTimeout()
для моделирования сна потока. Как это:
busy = false;
function UserInputChanged(control) {
busy = true;
currentControl = control;
// use setTimeout to simulate slow validation code (production code does not use setTimeout)
setTimeout("ValidateAmount()", 100);
}
function SaveForm() {
if(busy)
{
setTimeout("SaveForm()", 10);
return;
}
// call web service to save value
document.getElementById("SavedAmount").innerHTML = amount;
}
function ValidateAmount() {
// various validationey functions here
amount = currentControl.value; // save value to collection
document.getElementById("Subtotal").innerHTML = amount; // update subtotals
busy = false;
}
Это когда вы загружаете компоненты динамически в коде или в дизайнере? Если он есть в дизайнере, вы можете использовать команды Формат -> Порядок -> На задний план и Формат -> Порядок -> На передний план . На задний план и На передний план также доступны в контекстном меню при щелчке правой кнопкой мыши по элементу управления, а также на панели инструментов «Макет», которая должна появляться автоматически во время работы. в дизайнере форм.
В представлении дизайнера вы также можете открыть панель «Структура документа», чтобы просмотреть древовидную структуру текущей формы / элемента управления, а затем перетащить компоненты «вверх» и «вниз» «доставить вперед и назад, а также в контейнеры и из них.
Вы пробовали играть с Z-порядком ?
См. Также: Метод Control.SentToBack - Большинство элементов управления Winform должны поддерживать его.
В Какао для Mac OS X у вас есть следующая цепочка респондентов, где вы можете спросить текстовое поле, какой элемент управления должен иметь фокус следующим. Это то, что делает работу табуляции между текстовыми полями. Но поскольку устройства iOS не имеют клавиатуры, только сенсорную, эта концепция не пережила переход на Cocoa Touch.
Это можно легко сделать в любом случае, с двумя предположениями:
UITextField
находятся в одном родительском представлении. Предполагая, что вы можете переопределить textFieldShouldReturn: как это:
-(BOOL)textFieldShouldReturn:(UITextField*)textField
{
NSInteger nextTag = textField.tag + 1;
// Try to find next responder
UIResponder* nextResponder = [textField.superview viewWithTag:nextTag];
if (nextResponder) {
// Found next responder, so set it.
[nextResponder becomeFirstResponder];
} else {
// Not found, so remove keyboard.
[textField resignFirstResponder];
}
return NO; // We do not want UITextField to insert line-breaks.
}
Добавьте еще код и предположения также можно игнорировать.
Swift 4.
ctrl.BringToFront(); // This is equivalent to Controls.SetChildIndex(ctrl,0);