C#: Как подкачать положение двух средств управления winform

Короткий ответ, нет.

темы чата Сочувствия сделаны поддерживать базирующиеся темы Adium (Mac только клиент IM). Ссылка FAQ о клиенте Сочувствия (первые 3 вопроса отвечают на вопросы о темах Сочувствия и как создать Ваше собственное):

http://live.gnome.org/Empathy/FAQ#How_can_I_install_new_themes_in_Empathy_.3F

темы Гибридного языка используют XML-файл для создания тем списка контактов, которые могут также управлять стилем средства рассылки также:

http://developer.pidgin.im/wiki/BuddyListThemes

Начиная с сообщения Adium код Стиля ( http://trac.adium.im/wiki/CreatingMessageStyles ) использует другую структуру затем Гибридный язык, процесс преобразования мог бы взять некоторое время, но может быть сделан.

, Если Вам действительно нравится стиль сообщения Ubuntu за Гибридный язык, преобразовывая его в тот тема списка контактов , формат файлов XML мог бы быть лучшим способом. Однажды его преобразованное, это может быть предложение Ubuntu упаковочная команда, таким образом, они могут использовать его для будущих установок (просто помещающий это там... принятие желаемого за действительное).

местоположение стиля сообщения Adium, который Вы любите, может быть найдено здесь в Вашей системе:

/usr/share/adium/message-styles/ubuntu.AdiumMessageStyle (directory)

я надеюсь, что это объясняет больше о темах Гибридного языка и Сочувствия.

5
задан Svish 1 September 2009 в 09:39
поделиться

4 ответа

В простом случае, когда оба элемента управления находятся на одной FlowLayoutPanel , используйте метод SetChildIndex в Controls .

Что-то вроде этого ...

var alphaIndex = panel.Controls.IndexOf(controlAlpha);
var betaIndex = panel.Controls.IndexOf(controlBeta);
panel.Controls.SetChildIndex(controlAlpha, betaIndex);
panel.Controls.SetChildIndex(controlBeta, alphaIndex);

Примечание: я не обработал здесь последовательность должным образом - вам нужно сначала установить предыдущий элемент управления, иначе, когда второй будет перемещен впереди него, результирующий индекс тоже будет высоко. Но это упражнение для читателя.

Для более сложного случая, когда элементы управления находятся на разных FlowLayoutPanel , код проще (последовательность не имеет большого значения) и сложнее (каждый элемент управления необходимо удалить с одной панели и добавить к другой).

7
ответ дан 14 December 2019 в 08:56
поделиться
Control bobParent = bob.Parent;
Control aliceParent = alice.Parent;
int bobIndex = bobParent.Controls.GetChildIndex(bob);
int aliceIndex = aliceParent.Controls.GetChildIndex(alice);
bobParent.Controls.Add(alice);
aliceParent.Controls.Add(bob);
bobParent.Controls.SetChildIndex(alice, bobIndex);
aliceParent.Controls.SetChildIndex(bob, aliceIndex);

Наверное, не самый короткий, но все должно работать ...

1
ответ дан 14 December 2019 в 08:56
поделиться

Я не думаю, что вы можете сделать именно то, что пытаетесь достичь. Но ваши требования кажутся мне странными: вы можете идеально визуально поменять местами два элемента управления в форме без каких-либо ограничений на их соответствующий индекс в родительской ControlCollection .

Самое близкое, что вы могли бы сделать, это сохранить ваши элементы управления в Panel :

  • У вас будут PanelA и PanelB .
  • Сначала PanelA будет содержать ] Алиса и PanelB будет содержать Боб .
  • При замене сохраните Боб в PanelA и Алиса в PanelB .
0
ответ дан 14 December 2019 в 08:56
поделиться

Я бы сказал, что вам нужно удалить все элементы управления из ControlCollection (а), с которыми вы работаете, и сохранить их в структурах данных, которые соблюдают порядок элементов (может быть, SortedList ?).

В первом случае вам нужно поменять местами Алису и Боба в SortedList , а затем заново добавить все элементы управления из SortedList обратно в ControlCollection .

Второй случай будет аналогичен первому, за исключением того, что у вас будет 2 SortedList s, и вы бы поменяли местами Алису и Боба между ними.

-1
ответ дан 14 December 2019 в 08:56
поделиться
Другие вопросы по тегам:

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