Порядок слоев WinForm UI компонентов

Семафор или взаимное исключение являются, вероятно, лучшим способом пойти, но вместо занятого цикла, просто использовать 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;
}
20
задан double-beep 3 March 2019 в 18:55
поделиться

4 ответа

Это когда вы загружаете компоненты динамически в коде или в дизайнере? Если он есть в дизайнере, вы можете использовать команды Формат -> Порядок -> На задний план и Формат -> Порядок -> На передний план . На задний план и На передний план также доступны в контекстном меню при щелчке правой кнопкой мыши по элементу управления, а также на панели инструментов «Макет», которая должна появляться автоматически во время работы. в дизайнере форм.

28
ответ дан 29 November 2019 в 22:36
поделиться

В представлении дизайнера вы также можете открыть панель «Структура документа», чтобы просмотреть древовидную структуру текущей формы / элемента управления, а затем перетащить компоненты «вверх» и «вниз» «доставить вперед и назад, а также в контейнеры и из них.

12
ответ дан 29 November 2019 в 22:36
поделиться

Вы пробовали играть с Z-порядком ?

См. Также: Метод Control.SentToBack - Большинство элементов управления Winform должны поддерживать его.

5
ответ дан 29 November 2019 в 22:36
поделиться

В Какао для Mac OS X у вас есть следующая цепочка респондентов, где вы можете спросить текстовое поле, какой элемент управления должен иметь фокус следующим. Это то, что делает работу табуляции между текстовыми полями. Но поскольку устройства iOS не имеют клавиатуры, только сенсорную, эта концепция не пережила переход на Cocoa Touch.

Это можно легко сделать в любом случае, с двумя предположениями:

  1. Все "tabbable" UITextField находятся в одном родительском представлении.
  2. Их «порядок табуляции» определяется свойством tag.

Предполагая, что вы можете переопределить 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);
31
ответ дан 29 November 2019 в 22:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: