Member 13569650 Ответов: 2

Как сделать некоторые метки на одном и том же месте видимыми каждый раз


Привет
У меня есть 5 меток на одном и том же месте, и я хочу сделать одну видимой
а остальные невидимы.

и переключайтесь между темами.

Любая помощь - спасибо.

Что я уже пробовал:

LabelMatchGroupCapture.Visible = False
     LabelMatchGroup.Visible = False
     LabelMatch.Visible = False
     ReplaceLabel.Visible = False
     SplitLabel.Visible = False

     If xn = 3 Then
         LabelMatchGroupCapture.Visible = True
     ElseIf xn = 2 Then
         LabelMatchGroup.Visible = True
     Else
         LabelMatch.Visible = True
     End If

RickZeeland

Ваш код выглядит нормально, в чем проблема?
Что вы имеете в виду с темой, возможно, снимая кожу с Winforms?

Member 13569650

Привет Рикзиленд

Проблема в том, что этот код является
внутри субмарины, которая занимает несколько секунд обработки.
и за это время никаких ярлыков не появляется.
и только в процессе отделки
появится одна выбранная метка
и я хочу, чтобы этот ярлык был
виден в любое время суток.

Я поставил этот код перед длительным процессом.

Member 13569650

Я понял
Я сделаю только один ярлык
и каждый раз я буду меняться
его текст с требуемым текстом.

Спасибо.

RickZeeland

Я знал, что ты сможешь это сделать. :)

2 Ответов

Рейтинг:
2

RickZeeland

Поскольку ваша проблема, по-видимому, заключается в некотором трудоемком коде, вы можете поместить этот код в отдельную задачу, см.: Задача Visual Basic - Tutlane[^]
Поэтому сначала обновите свои метки, а затем запустите задачу.

Имейте в виду, что упомянутый пример очень прост, как только вы хотите сделать что-то в графическом интерфейсе, например изменить метку, все становится более сложным, и вы должны использовать Свойство invokerequired или что-то похожее.
vb.net - что означает "InvokeRequired" и "Invoke" в .Net? - переполнение стека[^]


Member 13569650

Я так не думаю.
Я думаю, что
порядок, в котором расположены этикетки
сделаны видимыми/невидимыми есть
дело в том, что с некоторыми
играя с заказом, который я получил
какое-то решение, но не полное.

RickZeeland

Поскольку я не вижу вашего "трудоемкого кода", боюсь, что я мало что могу с этим поделать ...

Member 13569650

Например, этот порядок видимого/невидимого
дайте мне близкое решение
только одна метка большая появляется частично ==> "MatchesGroupsC"
эти ярлыки таковы

Я.LabelMatchGroupCapture.Text = "Результаты MatchesGroupsCaptures"
Я.LabelMatchGroup.Text = "Результаты Матчей Групп"
Меня.LabelMatch.Text = "Результаты Матчей"
Меня.ReplaceLabel.Text = "Заменить Результаты"
Меня.SplitLabel.Text = "Разделить Результаты"

Так что это вопрос порядка (как найти правильный порядок)


Если xn = 3, то
list2array = sMatchesGroupsCaptures.Метод toArray
tlist2array = vMatchesGroupsCaptures.Метод toArray
LabelMatchGroupCapture.Видимое = Истинное
LabelMatch.Видна = Ложь
LabelMatchGroup.Видна = Ложь
ReplaceLabel.Видна = Ложь
SplitLabel.Видна = Ложь
ElseIf xn = 2 тогда
list2array = sMatchesGroupsList.Метод toArray
tlist2array = vMatchesGroupsList.Метод toArray
LabelMatchGroup.Видимое = Истинное
LabelMatch.Видна = Ложь
LabelMatchGroupCapture.Видна = Ложь
ReplaceLabel.Видна = Ложь
SplitLabel.Видна = Ложь
Еще
list2array = sMatchesList.Метод toArray
tlist2array = vMatchesList.Метод toArray
LabelMatch.Видимое = Истинное
LabelMatchGroup.Видна = Ложь
LabelMatchGroupCapture.Видна = Ложь
ReplaceLabel.Видна = Ложь
SplitLabel.Видна = Ложь
Конец, Если

RickZeeland

Это звучит так, как будто у вас есть проблема с порядком табуляции элементов управления, см.: https://docs.microsoft.com/en-us/dotnet/framework/winforms/controls/how-to-set-the-tab-order-on-windows-forms

Рейтинг:
1

phil.o

В дополнение к тому, чтобы сделать один видимым, вы должны сделать четыре других невидимыми.

Лучшим решением для спагетти-кода if..else было бы иметь метки в массиве и определить функцию, чтобы сделать метку с указанным индексом видимой (подразумевая, что четыре другие метки невидимы).

private void MakeVisible(int index)
{
   for (int i = 0; i < theLabelArray.Length; ++i)
   {
      theLabelArray[i].Visible = (i == index);
   }
}


Member 13569650

Этот код делает невидимыми еще четверых.

Maciej Los

Он делает именно то, что вы упомянули в своем вопросе.

Maciej Los

5ed!

phil.o

Спасибо Мацей :)

phil.o

Ваш ответ на комментарий Рика не совсем соответствует вашему первоначальному вопросу. Без более глубокого контекста не очевидно, что все метки становятся невидимыми каждый раз, прежде чем одна из них становится видимой.

Member 13569650

Наконец то решение которое у меня было
приехал в себя.
Делает один ярлык и меняет его
текст.
но я был вынужден уйти в космос.
короткие этикетки.