Solved

Custom Width Message Box per Label Length?

Posted on 2006-07-07
5
380 Views
Last Modified: 2011-10-03
I have two problems:

1. My text does not show on my message box, I found the Thread(sleep) is a problem.....

2. I would like to base the winform (custom message box) on the varrying label length...

Leave it to microsoft to NOT allow for a more flexable MessageBox.Show.
As if thier thousands of programmers have never needed to auto-close one.

Anyway, here's what I have so far:

[Messages form]
      private void Messages_Load(object sender, EventArgs e)
        {
            this.Width = lblMessage.Text.Length;   // always too narrow, cuts-off half of label.
        }


[Form1] calling Messages form to open....

      Messages msg = new Messages();            
      msg.lblMessage.Text = "Thank You For Choosing Us";  
      msg.Show();
      Thread.Sleep(3000);
      msg.Close();
0
Comment
Question by:kvnsdr
  • 3
5 Comments
 
LVL 11

Expert Comment

by:vo1d
ID: 17063029
implement a timer in your Messages form, which is started just after been shown.
if its count down from 3 seconds, close your Messages form.
0
 
LVL 1

Author Comment

by:kvnsdr
ID: 17063550
That sounds like a great idea.

Any idea why the message form doesn't expand to the correct width?
0
 
LVL 11

Expert Comment

by:vo1d
ID: 17064318
yes, do you want your message shown in one line or in multiline?
0
 
LVL 11

Accepted Solution

by:
vo1d earned 250 total points
ID: 17064417
here is an example, how you can do it. the message is in one line:

public partial class MessageForm : Form
    {
        private Timer _timer = new Timer();
       
        public MessageForm(string Message, int showTime)
        {
            InitializeComponent();                        
            this.FormBorderStyle      = FormBorderStyle.FixedSingle;
            this._messageLabel.Text = Message;
            this.ClientSize                = new Size(this._messageLabel.Width + 8, this._messageLabel.Height + 8);
            this._timer.Interval         = showTime;
            this._timer.Tick            += new EventHandler(TimerTickHandler);            
        }

        private void MessageForm_Load(object sender, EventArgs e)
        {            
            this._timer.Start();
        }
       
        void TimerTickHandler(object sender, EventArgs e)
        {
            this.Close();
        }
    }

the messageLabel has the location 4, 4.


in your mainform, you will just have to do this:

MessageForm frm = new MessageForm("Thank You For Choosing Us", 3000);
frm.ShowDialog();


if you wanna display short messages, you will have to change the line:
this.FormBorderStyle      = FormBorderStyle.FixedSingle;

to

this.FormBorderStyle      = FormBorderStyle.FixedToolWindow;

otherwise, the window will not size down  its width to the label width on short messages because of the caption bars control boxes.

regards, vo1d
0
 
LVL 96

Expert Comment

by:Bob Learned
ID: 17065179
WshShell.Popup:

http://www.ss64.com/wsh/popup.html

Notice the 'nSecondsToWait'.

1) Add a COM reference to 'Windows Script Host Object Model'
2) Instantiate a WshShell object
3) Call the Popup method

Bob
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Article by: Ivo
C# And Nullable Types Since 2.0 C# has Nullable(T) Generic Structure. The idea behind is to allow value type objects to have null values just like reference types have. This concerns scenarios where not all data sources have values (like a databa…
We all know that functional code is the leg that any good program stands on when it comes right down to it, however, if your program lacks a good user interface your product may not have the appeal needed to keep your customers happy. This issue can…
Learn how to create flexible layouts using relative units in CSS.  New relative units added in CSS3 include vw(viewports width), vh(viewports height), vmin(minimum of viewports height and width), and vmax (maximum of viewports height and width).
Many functions in Excel can make decisions. The most simple of these is the IF function: it returns a value depending on whether a condition you describe is true or false. Once you get the hang of using the IF function, you will find it easier to us…

911 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

22 Experts available now in Live!

Get 1:1 Help Now