MessageBox Issues

  • Thread starter Thread starter Curt Emich
  • Start date Start date
C

Curt Emich

I always thought writing a simple diagnostic message in a message box would
be pretty simple. Not in .NET.

First, I wrote this amazingly complex piece of code:

MessageBox.Show("yer mama")

It wouldn't even complile. "Gee...", I mused. "Maybe there's no reference
to that method in my project". I muzed correctly. So I added a reference
to System.Windows.Forms, which is where our beloved "MessageBox" method
resides.

Nothing. So at the top of my file, I wrote:

Imports System.Windows.Forms

Still, it wouldn't compile. Finally, I prefixed my call to MessageBox like
this:

System.Windows.Forms.MessageBox.Show("yer mama")

It compiles now, but I never see "yer mama" anywhere on the screen. It's
inside this function:

Private Sub DropDownList1_SelectedIndexChanged(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
DropDownList1.SelectedIndexChanged

System.Windows.Forms.MessageBox.Show("Yer mama")

End Sub



Maybe it's just not firing this sub, but that's kinda why the diagnostic is
there. I wanna find out if it is. Does this really have to be so
complicated?

I've run into situations in the past where I've had to spell out simple
methods by fully qualifying their namespaces. Why is that? Shouldn't it be
enough that they're listed under "references" in the solution explorer? Or
even written manually at the top of the file?

Any insights you can give me would be greatly appreciated.
 
It wouldn't even complile. "Gee...", I mused. "Maybe there's no reference
to that method in my project". I muzed correctly. So I added a reference
to System.Windows.Forms, which is where our beloved "MessageBox" method
resides.

Nothing. So at the top of my file, I wrote:

Imports System.Windows.Forms

Still, it wouldn't compile. Finally, I prefixed my call to MessageBox like
this:

It should. What compiler error message did it give you? That should be
enough.
Maybe it's just not firing this sub, but that's kinda why the diagnostic is
there. I wanna find out if it is. Does this really have to be so
complicated?

If you want to tell if the event handler is being executed, a breakpoint
would probably be better. Also, you might want to think about the
Debug.Write and Debug.WriteLine methods, in the System.Diagnostics
namespace. You don't have to add any extra references for those, and the
namespace is imported at the project level by default. Just make sure
you're targeting a Debug build.
I've run into situations in the past where I've had to spell out simple
methods by fully qualifying their namespaces. Why is that? Shouldn't it be
enough that they're listed under "references" in the solution explorer?

There are a lot of namespaces, and some of them have identical class
names. If everything was automatically imported, it would clog up the IDE
and lead to a lot of ambiguity. Odds are your code would have to use the
fully-qualified name -more- that way.

Jeremy
 
----- Curt Emich wrote: ----

... I added a reference to System.Windows.Forms, which is where our beloved "MessageBox" metho
resides

MessageBox is not a method; it's a class

...at the top of my file, I wrote

Imports System.Windows.Form

Still, it wouldn't compile. Finally, I prefixed my call to MessageBox lik
this

System.Windows.Forms.MessageBox.Show("yer mama"

What was the text of the error message? If you added the reference and the Imports statement, this line should compile just fine

...Maybe it's just not firing this sub, but that's kinda why the diagnostic i
there.

Is the control declared WithEvents? If not, you'l have to manually attach the event handler

AddHandler DropDownList1.SelectedIndexChanged, AddressOf DropDownList_SelectedIndexChange

...Does this really have to be so complicated

Well, yes. There are many dlls included with the framework, and any number may be added by a third party. They can't all be reference by default, otherwise you'd have multi-megabyte apps for even the most trivial of tasks.

...I've run into situations in the past where I've had to spell out simpl
methods by fully qualifying their namespaces. Why is that? Shouldn't it b
enough that they're listed under "references" in the solution explorer

All namespaces imported by default would be the same as not having namepaces at all. Everything would have to be fully qualified
 
As the namespace implies, the MessageBox method is for windows forms
applications.
In an ASP.NET environment your client is a web browser, therefore you should
use client side code such as javascript to display a message box on the
client.

Execute a line of code like this when you want a message box to be
displayed.
(This writes out the necessary client side javascript to your HTML page to
make the alert pop up as soon as the page is sent to their browser.)

RegisterStartupScript("startupScript", "<script
language=JavaScript>alert('This is my message.');</script>");

Here's more info:
http://msdn.microsoft.com/library/d...mWebUIPageClassRegisterStartupScriptTopic.asp

Here are a couple controls you might find to be useful:
http://www.metabuilders.com/Tools/ConfirmedButtons.aspx
http://www.jttz.com/msgbox/index.htm
 
Hi Steve,

I think that I would not have seen this, however I look to it from the
languages.vb group, when it was in the aspnet group, I would have seen.

I message this to point the OP hat this message is in my opinion the right
one, there are so much which are for the windowform, that he can become
confused.

And have nothing to add.

Cor
 
Maybe it does not like "yer mama" in the message box?
Curt, looking at your example code below, your message box is in the event
firing on a DropDownList1, which is an ASP component, so you are talking
about using MessageBox in an ASP page, right? If so, it won't work.
 
Back
Top