Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 11 additions & 7 deletions FlexibleMessageBox/FlexibleMessageBox.cs
Original file line number Diff line number Diff line change
Expand Up @@ -566,20 +566,24 @@ private static void SetDialogSizes(FlexibleMessageBoxForm flexibleMessageBoxForm
var stringRows = GetStringRows(text);
if (stringRows == null) return;

//Calculate whole text height
var textHeight = TextRenderer.MeasureText(text, FONT).Height;
//Calculate margins
var marginWidth = flexibleMessageBoxForm.Width - flexibleMessageBoxForm.richTextBoxMessage.Width;
var marginHeight = flexibleMessageBoxForm.Height - flexibleMessageBoxForm.richTextBoxMessage.Height;

flexibleMessageBoxForm.richTextBoxMessage.MaximumSize = new Size(flexibleMessageBoxForm.MaximumSize.Width - marginWidth,
flexibleMessageBoxForm.MaximumSize.Height - marginHeight);

//Calculate whole text height considering maximum size for richTextBoxMessage and WordBreak
TextFormatFlags textFormatFlags = new TextFormatFlags();
textFormatFlags |= TextFormatFlags.WordBreak;
var textHeight = TextRenderer.MeasureText(text, FONT, flexibleMessageBoxForm.richTextBoxMessage.MaximumSize, textFormatFlags).Height;

//Calculate width for longest text line
const int SCROLLBAR_WIDTH_OFFSET = 15;
var longestTextRowWidth = stringRows.Max(textForRow => TextRenderer.MeasureText(textForRow, FONT).Width);
var captionWidth = TextRenderer.MeasureText(caption, SystemFonts.CaptionFont).Width;
var textWidth = Math.Max(longestTextRowWidth + SCROLLBAR_WIDTH_OFFSET, captionWidth);

//Calculate margins
var marginWidth = flexibleMessageBoxForm.Width - flexibleMessageBoxForm.richTextBoxMessage.Width;
var marginHeight = flexibleMessageBoxForm.Height - flexibleMessageBoxForm.richTextBoxMessage.Height;
int magicAdd = 12;
marginHeight += magicAdd;
//Set calculated dialog size (if the calculated values exceed the maximums, they were cut by windows forms automatically)
flexibleMessageBoxForm.Size = new Size(textWidth + marginWidth,
textHeight + marginHeight);
Expand Down
10 changes: 10 additions & 0 deletions FlexibleMessageBoxDemo/Form1.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 12 additions & 0 deletions FlexibleMessageBoxDemo/Form1.cs
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,18 @@ private void btnOneLine_Click(object sender, EventArgs e)
MessageBoxIcon.Information);
}

private void buttonLongLine_Click(object sender, EventArgs e)
{
double MAX_WIDTH_FACTOR_start = FlexibleMessageBox.MAX_WIDTH_FACTOR;
FlexibleMessageBox.MAX_WIDTH_FACTOR = 0.3f;
FlexibleMessageBox.Show(this,
"MyApp v1.0.1 this is a long line message - this is a long line message - this is a long line message - this is a long line message - this is a long line message - this is a long line message - this is a long line message - this is a long line message - this is a long line message - this is a long line message - this is a long line message - this is a long line message - this is a long line message - ",
"MyApp",
MessageBoxButtons.OK,
MessageBoxIcon.Information);
FlexibleMessageBox.MAX_WIDTH_FACTOR = MAX_WIDTH_FACTOR_start;
}

private void button3_Click(object sender, EventArgs e)
{
}
Expand Down
34 changes: 29 additions & 5 deletions FlexibleMessageBoxDemo/Form1.resx
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;button1.ZOrder" xml:space="preserve">
<value>4</value>
<value>5</value>
</data>
<data name="button2.Location" type="System.Drawing.Point, System.Drawing">
<value>392, 132</value>
Expand All @@ -165,7 +165,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;button2.ZOrder" xml:space="preserve">
<value>3</value>
<value>4</value>
</data>
<data name="btnNormal.Location" type="System.Drawing.Point, System.Drawing">
<value>64, 64</value>
Expand All @@ -189,7 +189,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;btnNormal.ZOrder" xml:space="preserve">
<value>2</value>
<value>3</value>
</data>
<data name="btnOneLine.Location" type="System.Drawing.Point, System.Drawing">
<value>190, 64</value>
Expand All @@ -213,7 +213,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;btnOneLine.ZOrder" xml:space="preserve">
<value>1</value>
<value>2</value>
</data>
<data name="button3.Location" type="System.Drawing.Point, System.Drawing">
<value>502, 132</value>
Expand All @@ -237,6 +237,30 @@
<value>$this</value>
</data>
<data name="&gt;&gt;button3.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="buttonLongLine.Location" type="System.Drawing.Point, System.Drawing">
<value>301, 64</value>
</data>
<data name="buttonLongLine.Size" type="System.Drawing.Size, System.Drawing">
<value>261, 23</value>
</data>
<data name="buttonLongLine.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="buttonLongLine.Text" xml:space="preserve">
<value>Long Line with MAX_WIDTH_FACTOR=0.3</value>
</data>
<data name="&gt;&gt;buttonLongLine.Name" xml:space="preserve">
<value>buttonLongLine</value>
</data>
<data name="&gt;&gt;buttonLongLine.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;buttonLongLine.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;buttonLongLine.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
Expand All @@ -249,7 +273,7 @@
<value>659, 336</value>
</data>
<data name="$this.Font" type="System.Drawing.Font, System.Drawing">
<value>Meiryo UI, 9pt</value>
<value>Microsoft Sans Serif, 9pt</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>Form1</value>
Expand Down