Solved

Custom Width Message Box per Label Length?

Posted on 2006-07-07
5
381 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

Announcing the Most Valuable Experts of 2016

MVEs are more concerned with the satisfaction of those they help than with the considerable points they can earn. They are the types of people you feel privileged to call colleagues. Join us in honoring this amazing group of Experts.

Question has a verified solution.

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

It was really hard time for me to get the understanding of Delegates in C#. I went through many websites and articles but I found them very clumsy. After going through those sites, I noted down the points in a easy way so here I am sharing that unde…
Real-time is more about the business, not the technology. In day-to-day life, to make real-time decisions like buying or investing, business needs the latest information(e.g. Gold Rate/Stock Rate). Unlike traditional days, you need not wait for a fe…
This Micro Tutorial will give you a basic overview how to record your screen with Microsoft Expression Encoder. This program is still free and open for the public to download. This will be demonstrated using Microsoft Expression Encoder 4.
In a recent question (https://www.experts-exchange.com/questions/28997919/Pagination-in-Adobe-Acrobat.html) here at Experts Exchange, a member asked how to add page numbers to a PDF file using Adobe Acrobat XI Pro. This short video Micro Tutorial sh…

816 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

8 Experts available now in Live!

Get 1:1 Help Now