Parameters for the Load Routine of a Form

R

Roger Stenson

Hi all
I would be grateful if some one would tell me if there is a way to pass a
parameter to the Load routine of a form as with New in a Class

Roger Stenson
 
S

Sean Hederman

First off the Load member is an event, not a routine. You listen to events,
not call them, so the short answer is no. However, a Form is a class, and
you can pass parameters into it's constructor just like with any other
class.
 
G

Guest

Helllo Roger Stenson,
I created some quick code in C# that shows how to do it. However their are
several ways. You can create a custom show method like i did because you want
to pass a parameter at the load. but you can also pass paramters at the
constructor of a form are just as properties like other classes, because a
form is just a regular class.


Form 1

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

namespace PassParameters
{
/// <summary>
/// Summary description for Form1.
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.Button button1;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;

public Form1()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();

//
// TODO: Add any constructor code after InitializeComponent call
//
}

/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}

#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.button1 = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// button1
//
this.button1.Location = new System.Drawing.Point(40, 40);
this.button1.Name = "button1";
this.button1.TabIndex = 0;
this.button1.Text = "button1";
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(292, 269);
this.Controls.Add(this.button1);
this.Name = "Form1";
this.Text = "Form1";
this.ResumeLayout(false);

}
#endregion

/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}

private void button1_Click(object sender, System.EventArgs e)
{
Form2 fr = new Form2();
fr.Show("passed parameter");
}
}
}



Form 2 :

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;

namespace PassParameters
{
/// <summary>
/// Summary description for Form2.
/// </summary>
public class Form2 : System.Windows.Forms.Form
{
private System.Windows.Forms.TextBox textBox1;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;

public Form2()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();

//
// TODO: Add any constructor code after InitializeComponent call
//
}

/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}

public void Show(string param)
{
textBox1.Text = param;
this.Show();
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.textBox1 = new System.Windows.Forms.TextBox();
this.SuspendLayout();
//
// textBox1
//
this.textBox1.Location = new System.Drawing.Point(32, 64);
this.textBox1.Name = "textBox1";
this.textBox1.TabIndex = 0;
this.textBox1.Text = "";
//
// Form2
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(292, 269);
this.Controls.Add(this.textBox1);
this.Name = "Form2";
this.Text = "Form2";
this.ResumeLayout(false);

}
#endregion
}
}





greetz,
gert
 
R

Roger Stenson

Phew That was quick. Thankyou both. I had been fooled by seeing a Load
Event in a form into thinking that it worked like the Load and Activate
events in VB6. I am completely straightened out on the Constructor for Forms
now thanks

Roger Stenson
 
H

Herfried K. Wagner [MVP]

Roger,

Roger Stenson said:
I would be grateful if some one would tell me if there is a way to pass a
parameter to the Load routine of a form as with New in a Class

\\\
Public Class FooForm
Inherits Form

Public Sub New()
...
End Sub

Public Sub New(ByVal Data As String)
...
End Sub

...
End Class
///

Notice that the designer will always call the parameterless constructor to
instantiate the form when you create classes which inherit from your form
class and edit it in the Windows Forms designer.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top