コード例 #1
0
        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);
                }
            }
        }
コード例 #2
0
ファイル: MainForm.cs プロジェクト: johnmensen/TradeSharp
        /// <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);
        }
コード例 #3
0
        /// <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();
        }