private void ShowResultItems(Result res) { var values = res.Items.Values.ToList(); float maxWidth = 0; // 所有的 CheckBox 的最大宽度,用来将这些 CheckBox 进行对齐 // //flowLayoutPanel_Items.Controls.Clear(); foreach (ResultFileItem item in values) { CheckBox cb = new CheckBox() { Text = item.Name, Tag = item, Checked = false, // BackColor = Color.CadetBlue, }; // 为控件添加提示文字 string tip = null; if (!string.IsNullOrEmpty(item.Description)) { tip = item.Description + "\r\n"; } tip += item.GetValueString(); toolTip1.SetToolTip(cb, tip); // maxWidth = Math.Max(maxWidth, cb.CreateGraphics().MeasureString(item.Name, cb.Font).Width); // flowLayoutPanel_Items.Controls.Add(cb); } // 设置控件的大小 if (flowLayoutPanel_Items.Controls.Count > 0) { maxWidth = maxWidth + 20; // 扩展的 20 像素表示 CheckBox 控件的勾选区的宽度 int h = flowLayoutPanel_Items.Controls[0].Size.Height; foreach (Control c in flowLayoutPanel_Items.Controls) { c.Size = new Size((int)maxWidth, h); } } }
/// <summary> /// показать выбранные кнопки инструментальной панели /// </summary> private void InitializeToolButtons(List<ChartToolButtonSettings> buttons, Control panel) { const int buttonMarging = 3; var buttonTop = toolBtnCross.Top; var firstUserButtonX = btnFlipPanelChartTools.Right + buttonMarging; var buttonSize = toolBtnCross.Size; // удалить кнопки while (panel.Controls.Count > 1) panel.Controls.RemoveAt(1); // добавить кнопки var left = firstUserButtonX; foreach (var btnDescr in buttons) { if (btnDescr.Group != null) continue; var button = new CheckBox { Parent = panel, ImageIndex = btnDescr.Image, Tag = btnDescr, Appearance = Appearance.Button, //FlatStyle = FlatStyle.Flat, ImageList = lstGlyph32, }; // кнопка "Курсор" нажата по-умолчанию if (btnDescr.ButtonType == ChartToolButtonSettings.ToolButtonType.Chart && btnDescr.Tool == CandleChartControl.ChartTool.Cursor) button.Checked = true; // кнопки "Запустить роботов", "Портфель роботов", "Состояние роботов" UpdateRobotIconUnsafe(robotFarm != null ? robotFarm.State : RobotFarm.RobotFarmState.Stopped); buttonToolTip.SetToolTip(button, btnDescr.ToString()); if (btnDescr.IsVisibleDisplayName) { button.Text = btnDescr.ToString(); var len = (int) button.CreateGraphics().MeasureString(button.Text, button.Font).Width + lstGlyph32.ImageSize.Width + 16; button.SetBounds(left, buttonTop, len, buttonSize.Height); left += (len + buttonMarging); button.ImageAlign = ContentAlignment.MiddleLeft; button.TextAlign = ContentAlignment.MiddleRight; } else { button.SetBounds(left, buttonTop, buttonSize.Width, buttonSize.Height); left += (buttonSize.Width + buttonMarging); } button.Click += ToolStripBtnClick; // добавить в панель panel.Controls.Add(button); } // добавить кнопки-менюшки var groupBtnWidth = buttonSize.Width + 12; var buttonGroups = buttons.Where(b => b.Group != null).Select(b => b.Group).Distinct().ToList(); foreach (var group in buttonGroups) { var groupBtn = new Button { Parent = panel, ImageIndex = group.ImageIndex, Tag = group, ImageList = lstGlyph32, FlatStyle = FlatStyle.Flat, Text = " ...", ImageAlign = ContentAlignment.MiddleLeft, TextAlign = ContentAlignment.MiddleRight }; buttonToolTip.SetToolTip(groupBtn, group.Title); groupBtn.SetBounds(left, buttonTop, groupBtnWidth, buttonSize.Height); left += (groupBtn.Width + buttonMarging); // создать менюшку groupBtn.Click += GroupBtnClick; var btnMenu = new ContextMenuStrip {/*Parent = this,*/ Tag = group.Title}; var thisGroup = group; var groupButtons = buttons.Where(b => b.Group == thisGroup); foreach (var btn in groupButtons) { var item = new ToolStripButton(btn.ToString(), lstGlyph32.Images[btn.Image], ToolStripBtnClick) {Tag = btn}; btnMenu.Items.Add(item); if (btnMenu.Width < item.Width) btnMenu.Width = item.Width; } // добавить пустышку, чтобы размер меню был посчитан корректно if (btnMenu.Items.Count == 1) { var item = new ToolStripLabel("empty") {Visible = false}; btnMenu.Items.Add(item); } buttonMenus.Add(btnMenu); } // назначить дефолтовый инструмент графикам foreach (var child in Charts) { child.chart.ActiveChartTool = CandleChartControl.ChartTool.Cursor; } // развернуть панель BtnFlipPanelChartToolsClick(panel.Controls[0], EventArgs.Empty); }
/// <summary> /// Instantiates a RemoveAccount object. /// </summary> /// <param name="domainInfo">The DomainInformation object for the account to be deleted.</param> public RemoveAccount(DomainInformation domainInfo) { // // Required for Windows Form Designer support // InitializeComponent(); server.Text = domainInfo.Name; host.Text = domainInfo.Host; user.Text = domainInfo.MemberName; icon.Image = Novell.Win32Util.Win32Window.IconToAlphaBitmap(SystemIcons.Question); removeAll.Enabled = domainInfo.Authenticated; int delta; int temp; // Calculate any needed expansion of label1 control. Graphics g = label1.CreateGraphics(); try { SizeF textSize = g.MeasureString(label1.Text, label1.Font); delta = (int)Math.Ceiling(textSize.Width) - label1.Width; } finally { g.Dispose(); } // Calculate any needed expansion of label2, label3, and label4 controls. SizeF label2Size; g = label2.CreateGraphics(); try { label2Size = g.MeasureString(label2.Text, label2.Font); } finally { g.Dispose(); } SizeF label3Size; g = label3.CreateGraphics(); try { label3Size = g.MeasureString(label3.Text, label3.Font); } finally { g.Dispose(); } SizeF label4Size; g = label4.CreateGraphics(); try { label4Size = g.MeasureString(label4.Text, label4.Font); } finally { g.Dispose(); } if (label2Size.Width > label3Size.Width && label2Size.Width > label4Size.Width) { temp = (int)Math.Ceiling(label2Size.Width) - label2.Width; } else if (label3Size.Width > label2Size.Width && label3Size.Width > label4Size.Width) { temp = (int)Math.Ceiling(label3Size.Width) - label3.Width; } else { temp = (int)Math.Ceiling(label4Size.Width) - label4.Width; } if (temp > 0) { // Adjust the size of the labels and positions of the controls next to the labels. label2.Width = label3.Width = label4.Width += temp + 8; server.Left = host.Left = user.Left = label2.Left + label2.Width + 8; } // We only need to keep track of the largest delta. if (temp > delta) { delta = temp; } // Calculate any needed expansion of server, host, and user controls. g = server.CreateGraphics(); try { SizeF serverSize = g.MeasureString(server.Text, server.Font); g.Dispose(); g = host.CreateGraphics(); SizeF hostSize = g.MeasureString(host.Text, host.Font); g.Dispose(); g = user.CreateGraphics(); SizeF userSize = g.MeasureString(user.Text, user.Font); if ((serverSize.Width > hostSize.Width) && (serverSize.Width > userSize.Width)) { // The server name is the longest. temp = (int)Math.Ceiling(serverSize.Width) - server.Width; } else if ((hostSize.Width > serverSize.Width) && (hostSize.Width > userSize.Width)) { // The host is the longest. temp = (int)Math.Ceiling(hostSize.Width) - host.Width; } else { // The username is the longest. temp = (int)Math.Ceiling(userSize.Width) - user.Width; } } finally { g.Dispose(); } if (temp > delta) { delta = temp; } // Calculate any needed expansion of removeAll control. g = removeAll.CreateGraphics(); try { SizeF removeAllSize = g.MeasureString(removeAll.Text, removeAll.Font); temp = (int)Math.Ceiling(removeAllSize.Width) - removeAll.Width + 18; // +18 to account for the checkbox. } finally { g.Dispose(); } if (temp > delta) { delta = temp; } // Adjust the width based on the largest delta. if (delta > 0) { this.Width += delta; } CenterToParent(); }