|
I am using c# window application. I am trying to pass the value of variable from one form to other. But it is giving error:Can any one correct this? thanks in advance.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Threading;
namespace WindowsApplication1
{
public partial class Form1 : System.Windows.Forms.Form
{
public string frm1;
Form2 f = new Form2();
private string stringOnForm1;
public Form1(string sTEXT)
{
InitializeComponent();
textBox1.Text = sTEXT;
}
private void Form1_Load(object sender, EventArgs e)
{
f.Show();
f.button2.Visible = false;
Random rand = new Random();
Color[] c = { Color.Green, Color.Red };
this.button1.BackColor = c[rand.Next(0, c.Length)];
this.button2.BackColor = c[rand.Next(0, c.Length)];
if (this.button1.BackColor == Color.Red && this.button2.BackColor != Color.Red)
{
f.button2.Visible = true;
f.s = "1 Message received";
f.s1 = "ur gas is being leaked";
}
else if (this.button2.BackColor == Color.Red && this.button1.BackColor != Color.Red)
{
f.button2.Visible = true;
f.s = "1 Message received";
f.s1 = "ur electric is being leaked";
}
else if (this.button1.BackColor == Color.Red && this.button2.BackColor == Color.Red)
{
f.button2.Visible = true;
f.s = "2 Messages received";
f.s1 = "ur electric and gas is being leaked";
}
}
private void button1_Click(object sender, EventArgs e)
{
}
private void button2_Click(object sender, EventArgs e)
{
}
private void label2_Click(object sender, EventArgs e)
{
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
} }
Error:
No overload for method 'Form1' takes '0' arguments
|
|
|
|
|
Either try adding the default constructor back to your source code:
public Form1() {
InitializeComponent();
}
or modify the creation of the Form1 to have a string parameter for parameter sTEXT. For example:
... a = new Form1("SomeText");
|
|
|
|
|
What the message says is this: (for some reason, not sure which) your app needs a Form1 constructor without parameters, and you only have a single constructor, one with a string parameter.
I have three pieces of advice for you:
1.
learn to use all available information; when using a debug build, a compile-time error as well as a run-time exception provides you with file name or class name, and line number information. So you can easily figure out where it is unhappy. The problem may exist at that very location, or it gets detected at that location but is located elsewhere.
In this case I bet it is pointing to something like Application.Run(new Form1()); in perhaps a file called Program.cs
2.
learn to properly post a question. Your problem description (what it does, what you hope it would do, what your overall goal is) is not so good (you may have noticed most of your posts so far have been down-voted by one or more people). Your usage of PRE tags is fine, however we have seen 10 generations of your code already; and it badly needs a clean up, so please remove all empty handlers, all commented code, all redundant empty lines; then show only the relevant part of it. Which you probably haven't this time, if my hunch is right.
3.
Stop your hip-hop experiments for a while; choose, buy and study an introductory book on C# and learn how to program in a structured way. It will teach you many things including the use of meaningful names (not: Form1, Form2, f), object orientation, proper code design, etc.
Luc Pattyn [Forum Guidelines] [My Articles] Nil Volentibus Arduum
Please use <PRE> tags for code snippets, they preserve indentation, improve readability, and make me actually look at the code.
|
|
|
|
|
I realise this sounds a bit pathetic, but I have developed a workaround for a weakness in the pictureBox class, and I will publish it as an article on CodeProject. However I haven't yet upgraded from VC2005 (as a freelancer I am having trouble getting work in these straightened times and don't reall want to shell out for VS2010 just at the moment). Before I publish I would like to check whether the problem has been solved in later versions of .NET. I have a test program all ready. If someone with VS2010 could spare half an hour to run the test it would save me wasting my and everyone else's time on an unecessary article.
Dave
|
|
|
|
|
VS2010 comes in Express versions http://www.microsoft.com/express/Downloads/[^] - that way you can evaluate your software at no charge to you...
Real men don't use instructions. They are only the manufacturers opinion on how to put the thing together.
Digital man: "You are, in short, an idiot with the IQ of an ant and the intellectual capacity of a hose pipe."
|
|
|
|
|
Doh!. Thanks OriginalGriff. I didn't even realise they did a free Express version. That's done the trick. What an idiot!!
Dave
|
|
|
|
|
Welcome!
Real men don't use instructions. They are only the manufacturers opinion on how to put the thing together.
Digital man: "You are, in short, an idiot with the IQ of an ant and the intellectual capacity of a hose pipe."
|
|
|
|
|
You don't need Visual Studio to compile against .net anyway. I recommend learning to make do without it.
|
|
|
|
|
Interesting! What do you use then?
Dave
|
|
|
|
|
csc.exe (C Sharp Compiler) is included in each version of the .NET framework. Command line only, but it works.
Real men don't use instructions. They are only the manufacturers opinion on how to put the thing together.
Digital man: "You are, in short, an idiot with the IQ of an ant and the intellectual capacity of a hose pipe."
|
|
|
|
|
Dave Midgley wrote: What do you use then?
You need to understand the difference between Visual Studio, which is an IDE, and csc which is the compiler. You can use both independently, although you need the compiler to build projects from within VS.
I must get a clever new signature for 2011.
|
|
|
|
|
Right, I compile at the command line[^], like a real man.
Compiling WinForms applications is more complex, and I haven't written anything about it, but it's not a big deal.
Otherwise, I recommend using an Express edition.
|
|
|
|
|
Dave Midgley wrote: but I have developed a workaround for a weakness in the pictureBox class
The only weakness with the PictureBox class is actually using it. It's the most over-abused control in the entire ToolBox.
What weakness are you talking about?
|
|
|
|
|
I agree it's not very good. I was quite surprised to find that it does actually support animated GIFs, and then unsurprised to find that it doesn't support them properly by implementing a non-infinite number of loops.
Dave
|
|
|
|
|
Hi All,
I would like to assign a value to a variable in the Default.aspx.cs section of my code. This value will never change. To prevent having to capture this value throughout the code I want this variable to be accessable throughout the Web Application.
The code looks like this:
public partial Class _Default : System.Web.UI.Page
{
public static int timeout;
protected void Page_Load(object sender, EventArgs e)
{
timeout = toVal;
}
}
One of the classes I want to access the static "timeout" variable:
public partial class FormPage : System.Web.UI.Page
{
protected void Page_PreInit(object sender, EventArgs e)
{
}
}
I had another idea to make a seperate class file out of the code that gets the timeout value from the web.config file. Each time the timeout value is needed call the class and return the timeout. I just feel this would be a waste being that the timeout value will always be the same.
Any help would be really appreciated.
I'm also open to suggestions.
Thank you
modified on Saturday, February 12, 2011 10:51 PM
|
|
|
|
|
Put it in the web.config file or in a session variable.
Static variables are for the life of the class, not globally applied - they will be removed when the instance of the application terminates.
When does the app terminate? For ASP.NET, it terminates when the page load is finished.
I.e. The page request arrives at the server. The app is started, returns the page and is terminated. Any postback, or new page request starts a new instance of the app.
Putting it in a static variable won't work: the static variable would have to be set up anew every time the page is loaded!
Real men don't use instructions. They are only the manufacturers opinion on how to put the thing together.
Digital man: "You are, in short, an idiot with the IQ of an ant and the intellectual capacity of a hose pipe."
|
|
|
|
|
Thank you for your reply.
The timeout is stored in the web.config file, this is where the value is being retrieved from. I need to use this value in my code on multiple pages within the web application.
I am trying to add the value to a session variable within the default.aspx.cs file and then trying to retrieve it from the session variable in another but keep getting the error:
"Object reference not set to an instance of an object."
This indicates to me that the session variable is null, but how can this be when I previously populated it in the default page?
Here is some basic code I put together to make it simpler for testing:
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Session.Add("Test", "Testing session pass");
}
}
public partial class FormPage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Response.Write(Session["Test"].ToString());
}
}
Do you know what the problem is?
Thank you
|
|
|
|
|
I just tried it locally to be on the safe side, and the only way I could duplicate your problem was by closing the browser and starting a new run, but going directly to a page rather than via the default page. Are you sure you loaded the default page first?
Real men don't use instructions. They are only the manufacturers opinion on how to put the thing together.
Digital man: "You are, in short, an idiot with the IQ of an ant and the intellectual capacity of a hose pipe."
|
|
|
|
|
Thank you. That was the problem, I wasn't running the code from the default.aspx file when testing it out of VS.
Thank you for taking the time to help me out with this. I appreciate it.
|
|
|
|
|
I understand that you don't want to "capture" this value, but isn't this an application setting? If so, add it to the web.config and access it using
ConfigurationManager.AppSettings["MySettingName"]
If it's a per-user setting, then put it into session (which is per-user) and access using
Session["MySettingName"] .....App settings and Session are provided for precisely this kind of thing, so it seems a little redundant to "re-invent the wheel" to store it in another way....
Admittedly, both AppSettings and Session (and Application state for that matter) are dictionaries, so there is a small overhead in the lookups.
C# has already designed away most of the tedium of C++.
|
|
|
|
|
Hi Richard,
Thank you for your reply. The timeout value is stored in the web.config file and after reviving OrigionalGriff's post I went and stored the value, taken from the web.config file and stored it in a session variable.
It appears to be the same solution you propose, which I'm happy to hear as it seems to be the best way to go about it.
Thank you again,
Mel
|
|
|
|
|
Hallo everyone,
I want to make a Simple calculator, as an exercise to get familiar with GUI and C#
I can easily drag 10 buttons, name them btn1, btn2... btn0 and then create the appropriate functions like
private void btn1_Click(object sender, EventArgs e)
and let a member variable have the appropriate value.
But...
isn't there a better way to deal with that? Something like having an array[9], where every field is a button, or sort of it?
I find it ugly and really annoying having 10 functions who do quite the same thing.
Thanks...
|
|
|
|
|
several Controls can share some handler, and Controls have a nice Tag property where you can store whatever you like. So it could be:
AnyDigitButton_Clicked(object sender, EventArgs e) {
Button btn=sender as Button;
number=10*number+(int)btn.Tag;
}
PS: there are lots of articles on calculators around, search CodeProject or Google, and see how they do it.
Luc Pattyn [Forum Guidelines] [My Articles] Nil Volentibus Arduum
Please use <PRE> tags for code snippets, they preserve indentation, improve readability, and make me actually look at the code.
|
|
|
|
|
Thanks for replying.
And how do you link all buttons in a handler? Maybe by putting them inside a groupBox? I tried it so but didn't work. Where does the Method 'AnyDigitButton_Clicked' come from?
|
|
|
|
|
You add a handler to each of the buttons click event, but that handler can be created from the same function. That's it.
|
|
|
|