public override Size GetPreferredSize(Size proposedSize) { Size preferredSize; base.GetPreferredSize(proposedSize); using (var g = CreateGraphics()) { proposedSize = new Size(int.MaxValue, int.MaxValue); preferredSize = TextRenderer.MeasureText(g, Text, WellsMetroFonts.Label(metroLabelSize, metroLabelWeight), proposedSize, WellsMetroPaint.GetTextFormatFlags(TextAlign)); } return(preferredSize); }
private void CreateBaseTextBox() { if (baseTextBox.Visible && !firstInitialization) { return; } if (!firstInitialization) { return; } firstInitialization = false; if (!DesignMode) { Form parentForm = FindForm(); if (parentForm != null) { parentForm.ResizeBegin += new EventHandler(parentForm_ResizeBegin); parentForm.ResizeEnd += new EventHandler(parentForm_ResizeEnd); } } baseTextBox.BackColor = Color.Transparent; baseTextBox.Visible = true; baseTextBox.BorderStyle = BorderStyle.None; baseTextBox.Font = WellsMetroFonts.Label(metroLabelSize, metroLabelWeight); baseTextBox.Location = new Point(1, 0); baseTextBox.Text = Text; baseTextBox.ReadOnly = true; baseTextBox.Size = GetPreferredSize(Size.Empty); baseTextBox.Multiline = true; baseTextBox.DoubleClick += BaseTextBoxOnDoubleClick; baseTextBox.Click += BaseTextBoxOnClick; Controls.Add(baseTextBox); }
private void UpdateBaseTextBox() { if (!baseTextBox.Visible) { return; } SuspendLayout(); baseTextBox.SuspendLayout(); if (useCustomBackColor) { baseTextBox.BackColor = BackColor; } else { baseTextBox.BackColor = WellsMetroPaint.BackColor.Form(Theme); } if (!Enabled) { if (Parent != null) { if (Parent is WellsMetroTile) { baseTextBox.ForeColor = WellsMetroPaint.ForeColor.Tile.Disabled(Theme); } else { if (useStyleColors) { baseTextBox.ForeColor = WellsMetroPaint.GetStyleColor(Style); } else { baseTextBox.ForeColor = WellsMetroPaint.ForeColor.Label.Disabled(Theme); } } } else { if (useStyleColors) { baseTextBox.ForeColor = WellsMetroPaint.GetStyleColor(Style); } else { baseTextBox.ForeColor = WellsMetroPaint.ForeColor.Label.Disabled(Theme); } } } else { if (Parent != null) { if (Parent is WellsMetroTile) { baseTextBox.ForeColor = WellsMetroPaint.ForeColor.Tile.Normal(Theme); } else { if (useStyleColors) { baseTextBox.ForeColor = WellsMetroPaint.GetStyleColor(Style); } else { baseTextBox.ForeColor = WellsMetroPaint.ForeColor.Label.Normal(Theme); } } } else { if (useStyleColors) { baseTextBox.ForeColor = WellsMetroPaint.GetStyleColor(Style); } else { baseTextBox.ForeColor = WellsMetroPaint.ForeColor.Label.Normal(Theme); } } } baseTextBox.Font = WellsMetroFonts.Label(metroLabelSize, metroLabelWeight); baseTextBox.Text = Text; baseTextBox.BorderStyle = BorderStyle.None; Size = GetPreferredSize(Size.Empty); baseTextBox.ResumeLayout(); ResumeLayout(); }
protected virtual void OnPaintForeground(PaintEventArgs e) { Color foreColor; if (useCustomForeColor) { foreColor = ForeColor; } else { if (!Enabled) { if (Parent != null) { if (Parent is WellsMetroTile) { foreColor = WellsMetroPaint.ForeColor.Tile.Disabled(Theme); } else { foreColor = WellsMetroPaint.ForeColor.Label.Normal(Theme); } } else { foreColor = WellsMetroPaint.ForeColor.Label.Disabled(Theme); } } else { if (Parent != null) { if (Parent is WellsMetroTile) { foreColor = WellsMetroPaint.ForeColor.Tile.Normal(Theme); } else { if (useStyleColors) { foreColor = WellsMetroPaint.GetStyleColor(Style); } else { foreColor = WellsMetroPaint.ForeColor.Label.Normal(Theme); } } } else { if (useStyleColors) { foreColor = WellsMetroPaint.GetStyleColor(Style); } else { foreColor = WellsMetroPaint.ForeColor.Label.Normal(Theme); } } } } if (LabelMode == WellsMetroLabelMode.Selectable) { CreateBaseTextBox(); UpdateBaseTextBox(); if (!baseTextBox.Visible) { TextRenderer.DrawText(e.Graphics, Text, WellsMetroFonts.Label(metroLabelSize, metroLabelWeight), ClientRectangle, foreColor, WellsMetroPaint.GetTextFormatFlags(TextAlign)); } } else { DestroyBaseTextbox(); TextRenderer.DrawText(e.Graphics, Text, WellsMetroFonts.Label(metroLabelSize, metroLabelWeight), ClientRectangle, foreColor, WellsMetroPaint.GetTextFormatFlags(TextAlign, wrapToLine)); OnCustomPaintForeground(new WellsMetroPaintEventArgs(Color.Empty, foreColor, e.Graphics)); } }