У меня есть код ниже, чтобы нарисовать кнопку (кнопки) на панели для каждого монитора, который в настоящее время подключен к ПК.Кнопки заказа, которые представляют подключенные мониторы по Windows. Порядок отображения
var padding = 5;
var buttonSize = new Size(95, 75);
for (int i = 0; i < Screen.AllScreens.Length; i++)
{
var screen = Screen.AllScreens[i];
Button monitor = new Button
{
Name = "Monitor" + screen,
AutoSize = true,
Size = buttonSize,
Location = new Point(12 + i * (buttonSize.Width + padding), 14),
BackgroundImageLayout = ImageLayout.Stretch,
BackgroundImage = Properties.Resources.display_enabled,
TextAlign = ContentAlignment.MiddleCenter,
Font = new Font("Segoe UI", 10, FontStyle.Bold),
ForeColor = Color.White,
BackColor = Color.Transparent,
Text = screen.Bounds.Width + "x" + screen.Bounds.Height
};
monitorPanel.Controls.Add(monitor);
}
Для устройств с одним или несколькими мониторами, подключенными, код работает просто отлично, и это конечный результат:
Однако, в то время как он работает, я хотел бы (если возможно) заказать их, как они появляются в окне дисплея с Windows:
в первом скриншоте, они заказывается как 2 | 3 | 1 вместо 3 | 2 | 1.
Является ли это возможным после меня?
В последнее время, в подобной ситуации, я заказал возвращенный 'Screen's в коллекции с помощью позиции начала Х границ каждого монитора (в мой случай, каждый монитор начинался с более высокой координаты X, я не знаю, универсально ли это). –
Вы можете использовать 'dmPosition'. [ссылаться на эту ссылку] (https://msdn.microsoft.com/en-us/library/dd183411 (v = vs.85) .aspx) – Keppy