Solved

Custom Width Message Box per Label Length?

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

What Is Threat Intelligence?

Threat intelligence is often discussed, but rarely understood. Starting with a precise definition, along with clear business goals, is essential.

Join & Write a Comment

Suggested Solutions

Article by: Ivo
Anonymous Types in C# by Ivo Stoykov Anonymous Types are useful when  we do not need to follow usual work-flow -- creating object of some type, assign some read-only values and then doing something with them. Instead we can encapsulate this read…
Exception Handling is in the core of any application that is able to dignify its name. In this article, I'll guide you through the process of writing a DRY (Don't Repeat Yourself) Exception Handling mechanism, using Aspect Oriented Programming.
In this seventh video of the Xpdf series, we discuss and demonstrate the PDFfonts utility, which lists all the fonts used in a PDF file. It does this via a command line interface, making it suitable for use in programs, scripts, batch files — any pl…
Illustrator's Shape Builder tool will let you combine shapes visually and interactively. This video shows the Mac version, but the tool works the same way in Windows. To follow along with this video, you can draw your own shapes or download the file…

708 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

13 Experts available now in Live!

Get 1:1 Help Now