Passing Parameters between form classes - C#

G

Guest

I'm a rookie at C# and OO so please don't laugh! I have a form
(fclsTaxCalculator) that contains a text box (tboxZipCode) containing a zip
code. The user can enter a zip code in the text box and click a button to
determine whether the zip code is unique. If the zip code is not unique,
another form/dialog is displayed (fclsLookup) - lookup form/dialog. The zip
code and zipid are both passed to the lookup form/dialog by reference. I
then load a datagrid with the possible matches (i.e. zip, city, county,
state, zipid).
When the user clicks the row in the datagrid, I want to pass the zipid back
to the original form/dialog and run a stored procedure. My problem is I do
not know how to get the ZipId back to the fclsTaxCalculator form/dialog.
I've not figured out how to set the variable that was passed in the
mousedown event. I've search for examples of this and I've not been able to
track one down -
please help!!! My code is shown below:

//this is the event in the fclsTaxCalculator class that passes the ref
variables
private void lblZipCode_Click(object sender, System.EventArgs e)
{
strZipCode = tboxZip.Text;
fclsLookup objLookupForm = new fclsLookup(ref strZipCode, ref
strZipCodeDtlId);
objLookupForm.Show();
tboxZip.Text = strZipCode;
}

//this is the fclsLookup that receives the ref variable and I can't figure
out how to
//set the variables to the selected value.

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

namespace EnspireUtilities
{
/// <summary>
/// Summary description for Lookup.
/// </summary>
public class fclsLookup : System.Windows.Forms.Form
{
private System.Data.SqlClient.SqlDataAdapter sqlDataAdapter1;
private System.Data.SqlClient.SqlCommand sqlSelectCommand1;
private System.Data.SqlClient.SqlConnection sqlConnection1;
private EnspireUtilities.dsLookup dsLookup1;
private System.Windows.Forms.DataGrid dataGrid1;
private System.Windows.Forms.Button btnLoad;
private System.Windows.Forms.TextBox tboxLookupZipCode;
private System.Windows.Forms.Label lblLookupParameter;
private System.Windows.Forms.Button btnOK;
private System.Windows.Forms.Button btnCancel;
//private string strZipCode = string.Empty;
private System.Windows.Forms.DataGridTableStyle dataGridTableStyle1;
private System.Windows.Forms.DataGridTextBoxColumn dataGridTextBoxColumn1;
private System.Windows.Forms.DataGridTextBoxColumn dataGridTextBoxColumn2;
private System.Windows.Forms.DataGridTextBoxColumn dataGridTextBoxColumn3;
private System.Windows.Forms.DataGridTextBoxColumn dataGridTextBoxColumn4;
public string strZipCode = String.Empty;
public string strZipCodeDtlId = String.Empty;


/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;

public fclsLookup(ref string ZipCode, ref string ZipCodeDtlId)
{
//
// Required for Windows Form Designer support
//
InitializeComponent();

//
// TODO: Add any constructor code after InitializeComponent call
//
//tboxLookupZipCode.Text = ZipCode;
sqlSelectCommand1.Parameters["@zip"].Value = ZipCode;
dsLookup1.Clear();
sqlDataAdapter1.Fill(dsLookup1);
strZipCode = ZipCode;
strZipCodeDtlId = ZipCodeDtlId;
tboxLookupZipCode.Text = strZipCode;
this.dataGrid1.MouseDown += new
System.Windows.Forms.MouseEventHandler(this.dataGrid1_MouseDown);


}

/// <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.sqlDataAdapter1 = new System.Data.SqlClient.SqlDataAdapter();
this.sqlSelectCommand1 = new System.Data.SqlClient.SqlCommand();
this.sqlConnection1 = new System.Data.SqlClient.SqlConnection();
this.dsLookup1 = new EnspireUtilities.dsLookup();
this.dataGrid1 = new System.Windows.Forms.DataGrid();
this.dataGridTableStyle1 = new System.Windows.Forms.DataGridTableStyle();
this.dataGridTextBoxColumn1 = new
System.Windows.Forms.DataGridTextBoxColumn();
this.dataGridTextBoxColumn2 = new
System.Windows.Forms.DataGridTextBoxColumn();
this.dataGridTextBoxColumn3 = new
System.Windows.Forms.DataGridTextBoxColumn();
this.dataGridTextBoxColumn4 = new
System.Windows.Forms.DataGridTextBoxColumn();
this.btnLoad = new System.Windows.Forms.Button();
this.tboxLookupZipCode = new System.Windows.Forms.TextBox();
this.lblLookupParameter = new System.Windows.Forms.Label();
this.btnOK = new System.Windows.Forms.Button();
this.btnCancel = new System.Windows.Forms.Button();
((System.ComponentModel.ISupportInitialize)(this.dsLookup1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).BeginInit();
this.SuspendLayout();
//
// sqlDataAdapter1
//
this.sqlDataAdapter1.SelectCommand = this.sqlSelectCommand1;
this.sqlDataAdapter1.TableMappings.AddRange(new
System.Data.Common.DataTableMapping[] {
new System.Data.Common.DataTableMapping("Table",
"p_getZipCodeData", new System.Data.Common.DataColumnMapping[] {
new
System.Data.Common.DataColumnMapping("zip", "zip"),
new
System.Data.Common.DataColumnMapping("city", "city"),
new
System.Data.Common.DataColumnMapping("county", "county"),
new
System.Data.Common.DataColumnMapping("state", "state"),
new
System.Data.Common.DataColumnMapping("zip_code_dtl_id",
"zip_code_dtl_id")})});
//
// sqlSelectCommand1
//
this.sqlSelectCommand1.CommandText = "[p_getZipCodeData]";
this.sqlSelectCommand1.CommandType =
System.Data.CommandType.StoredProcedure;
this.sqlSelectCommand1.Connection = this.sqlConnection1;
this.sqlSelectCommand1.Parameters.Add(new
System.Data.SqlClient.SqlParameter("@RETURN_VALUE",
System.Data.SqlDbType.Int, 4, System.Data.ParameterDirection.ReturnValue,
false, ((System.Byte)(0)), ((System.Byte)(0)), "",
System.Data.DataRowVersion.Current, null));
this.sqlSelectCommand1.Parameters.Add(new
System.Data.SqlClient.SqlParameter("@zip", System.Data.SqlDbType.VarChar,
10));
//
// sqlConnection1
//
this.sqlConnection1.ConnectionString = "workstation id=CENGENXP2;packet
size=4096;user id=sa;data source=cengenxp2;persis" +
"t security info=True;initial catalog=src;password=cocacola";
//
// dsLookup1
//
this.dsLookup1.DataSetName = "dsLookup";
this.dsLookup1.Locale = new System.Globalization.CultureInfo("en-US");
//
// dataGrid1
//
this.dataGrid1.DataMember = "p_getZipCodeData";
this.dataGrid1.DataSource = this.dsLookup1;
this.dataGrid1.HeaderForeColor = System.Drawing.SystemColors.ControlText;
this.dataGrid1.Location = new System.Drawing.Point(0, 40);
this.dataGrid1.Name = "dataGrid1";
this.dataGrid1.Size = new System.Drawing.Size(568, 288);
this.dataGrid1.TabIndex = 0;
this.dataGrid1.TableStyles.AddRange(new
System.Windows.Forms.DataGridTableStyle[] {
this.dataGridTableStyle1});
this.dataGrid1.Navigate += new
System.Windows.Forms.NavigateEventHandler(this.dataGrid1_Navigate);
//
// dataGridTableStyle1
//
this.dataGridTableStyle1.DataGrid = this.dataGrid1;
this.dataGridTableStyle1.GridColumnStyles.AddRange(new
System.Windows.Forms.DataGridColumnStyle[] {
this.dataGridTextBoxColumn1,
this.dataGridTextBoxColumn2,
this.dataGridTextBoxColumn3,
this.dataGridTextBoxColumn4});
this.dataGridTableStyle1.HeaderForeColor =
System.Drawing.SystemColors.ControlText;
this.dataGridTableStyle1.MappingName = "p_getZipCodeData";
//
// dataGridTextBoxColumn1
//
this.dataGridTextBoxColumn1.Format = "";
this.dataGridTextBoxColumn1.FormatInfo = null;
this.dataGridTextBoxColumn1.HeaderText = "Zip Code";
this.dataGridTextBoxColumn1.MappingName = "zip";
this.dataGridTextBoxColumn1.Width = 75;
//
// dataGridTextBoxColumn2
//
this.dataGridTextBoxColumn2.Format = "";
this.dataGridTextBoxColumn2.FormatInfo = null;
this.dataGridTextBoxColumn2.HeaderText = "City";
this.dataGridTextBoxColumn2.MappingName = "city";
this.dataGridTextBoxColumn2.Width = 75;
//
// dataGridTextBoxColumn3
//
this.dataGridTextBoxColumn3.Format = "";
this.dataGridTextBoxColumn3.FormatInfo = null;
this.dataGridTextBoxColumn3.HeaderText = "County";
this.dataGridTextBoxColumn3.MappingName = "county";
this.dataGridTextBoxColumn3.Width = 75;
//
// dataGridTextBoxColumn4
//
this.dataGridTextBoxColumn4.Format = "";
this.dataGridTextBoxColumn4.FormatInfo = null;
this.dataGridTextBoxColumn4.HeaderText = "State";
this.dataGridTextBoxColumn4.MappingName = "state";
this.dataGridTextBoxColumn4.Width = 75;
//
// btnLoad
//
this.btnLoad.Location = new System.Drawing.Point(472, 8);
this.btnLoad.Name = "btnLoad";
this.btnLoad.TabIndex = 2;
this.btnLoad.Text = "Load";
this.btnLoad.Click += new System.EventHandler(this.btnLoad_Click);
//
// tboxLookupZipCode
//
this.tboxLookupZipCode.Location = new System.Drawing.Point(136, 8);
this.tboxLookupZipCode.Name = "tboxLookupZipCode";
this.tboxLookupZipCode.Size = new System.Drawing.Size(200, 20);
this.tboxLookupZipCode.TabIndex = 1;
this.tboxLookupZipCode.Text = "";
//
// lblLookupParameter
//
this.lblLookupParameter.Location = new System.Drawing.Point(24, 8);
this.lblLookupParameter.Name = "lblLookupParameter";
this.lblLookupParameter.Size = new System.Drawing.Size(100, 20);
this.lblLookupParameter.TabIndex = 3;
this.lblLookupParameter.Text = "Zip Code";
this.lblLookupParameter.TextAlign =
System.Drawing.ContentAlignment.MiddleRight;
//
// btnOK
//
this.btnOK.DialogResult = System.Windows.Forms.DialogResult.OK;
this.btnOK.Location = new System.Drawing.Point(378, 352);
this.btnOK.Name = "btnOK";
this.btnOK.TabIndex = 3;
this.btnOK.Text = "OK";
this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
//
// btnCancel
//
this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.btnCancel.Location = new System.Drawing.Point(472, 352);
this.btnCancel.Name = "btnCancel";
this.btnCancel.TabIndex = 4;
this.btnCancel.Text = "Cancel";
this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click);
//
// fclsLookup
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(568, 390);
this.Controls.Add(this.btnCancel);
this.Controls.Add(this.btnOK);
this.Controls.Add(this.lblLookupParameter);
this.Controls.Add(this.tboxLookupZipCode);
this.Controls.Add(this.btnLoad);
this.Controls.Add(this.dataGrid1);
this.Name = "fclsLookup";
this.Text = "Lookup";
((System.ComponentModel.ISupportInitialize)(this.dsLookup1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).EndInit();
this.ResumeLayout(false);

}
#endregion


private void btnLoad_Click(object sender, System.EventArgs e)
{
sqlSelectCommand1.Parameters["@zip"].Value = tboxLookupZipCode.Text;
dsLookup1.Clear();
sqlDataAdapter1.Fill(dsLookup1);
}

private void btnOK_Click(object sender, System.EventArgs e)
{

Close();
}

private void btnCancel_Click(object sender, System.EventArgs e)
{
Close();
}

private void dataGrid1_Navigate(object sender,
System.Windows.Forms.NavigateEventArgs ne)
{

Close();
}

protected void dataGrid1_MouseDown(object sender,
System.Windows.Forms.MouseEventArgs e)
{
string strMessage = "TEST";

//strMessage = "Row: " + dataGrid1.HitTest(e.X,e.Y).Row.ToString();
int x = dataGrid1.HitTest(e.X, e.Y).Row;

strZipCode = dataGrid1[x, 0].ToString();
strZipCodeDtlId = dataGrid1[x, 3].ToString();
ZipCodeDtlId = strZipCodeDtlId;
MessageBox.Show(strZipCode);
MessageBox.Show("I still don't know what I'm doing, but I'm at " +
strMessage + ". I need to send back " + strZipCode);
}

}
}
 
J

Jeff Louie

Hmm...
MyClass
LookupDone(object sender, object myArgs);

fclsLookup objLookupForm = new fclsLookup(MyClass this, strZipCode,
strZipCodeDtlId)
...

FCLSLookup
...
myClass.LookupDone(this,myArgs);

// immutable readonly structure or class
struct myArgs {
private zip;
public string Zip {
get {return this.zip;}
}
}
Regards,
Jeff
 
A

Armen Kirakosyan

HI
you have two methods to pass
1. create public variable in the dialog which you want to open and pass zip
code to dialog before show it
2. you can pass that variable while you generate your dialog in new.


Dialog dlg=new Dialog();
dlg.zip=zip.text;
dlg.show;


Johnny said:
I'm a rookie at C# and OO so please don't laugh! I have a form
(fclsTaxCalculator) that contains a text box (tboxZipCode) containing a
zip
code. The user can enter a zip code in the text box and click a button to
determine whether the zip code is unique. If the zip code is not unique,
another form/dialog is displayed (fclsLookup) - lookup form/dialog. The
zip
code and zipid are both passed to the lookup form/dialog by reference. I
then load a datagrid with the possible matches (i.e. zip, city, county,
state, zipid).
When the user clicks the row in the datagrid, I want to pass the zipid
back
to the original form/dialog and run a stored procedure. My problem is I
do
not know how to get the ZipId back to the fclsTaxCalculator form/dialog.
I've not figured out how to set the variable that was passed in the
mousedown event. I've search for examples of this and I've not been able
to
track one down -
please help!!! My code is shown below:

//this is the event in the fclsTaxCalculator class that passes the ref
variables
private void lblZipCode_Click(object sender, System.EventArgs e)
{
strZipCode = tboxZip.Text;
fclsLookup objLookupForm = new fclsLookup(ref strZipCode, ref
strZipCodeDtlId);
objLookupForm.Show();
tboxZip.Text = strZipCode;
}

//this is the fclsLookup that receives the ref variable and I can't figure
out how to
//set the variables to the selected value.

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

namespace EnspireUtilities
{
/// <summary>
/// Summary description for Lookup.
/// </summary>
public class fclsLookup : System.Windows.Forms.Form
{
private System.Data.SqlClient.SqlDataAdapter sqlDataAdapter1;
private System.Data.SqlClient.SqlCommand sqlSelectCommand1;
private System.Data.SqlClient.SqlConnection sqlConnection1;
private EnspireUtilities.dsLookup dsLookup1;
private System.Windows.Forms.DataGrid dataGrid1;
private System.Windows.Forms.Button btnLoad;
private System.Windows.Forms.TextBox tboxLookupZipCode;
private System.Windows.Forms.Label lblLookupParameter;
private System.Windows.Forms.Button btnOK;
private System.Windows.Forms.Button btnCancel;
//private string strZipCode = string.Empty;
private System.Windows.Forms.DataGridTableStyle dataGridTableStyle1;
private System.Windows.Forms.DataGridTextBoxColumn dataGridTextBoxColumn1;
private System.Windows.Forms.DataGridTextBoxColumn dataGridTextBoxColumn2;
private System.Windows.Forms.DataGridTextBoxColumn dataGridTextBoxColumn3;
private System.Windows.Forms.DataGridTextBoxColumn dataGridTextBoxColumn4;
public string strZipCode = String.Empty;
public string strZipCodeDtlId = String.Empty;


/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;

public fclsLookup(ref string ZipCode, ref string ZipCodeDtlId)
{
//
// Required for Windows Form Designer support
//
InitializeComponent();

//
// TODO: Add any constructor code after InitializeComponent call
//
//tboxLookupZipCode.Text = ZipCode;
sqlSelectCommand1.Parameters["@zip"].Value = ZipCode;
dsLookup1.Clear();
sqlDataAdapter1.Fill(dsLookup1);
strZipCode = ZipCode;
strZipCodeDtlId = ZipCodeDtlId;
tboxLookupZipCode.Text = strZipCode;
this.dataGrid1.MouseDown += new
System.Windows.Forms.MouseEventHandler(this.dataGrid1_MouseDown);


}

/// <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.sqlDataAdapter1 = new System.Data.SqlClient.SqlDataAdapter();
this.sqlSelectCommand1 = new System.Data.SqlClient.SqlCommand();
this.sqlConnection1 = new System.Data.SqlClient.SqlConnection();
this.dsLookup1 = new EnspireUtilities.dsLookup();
this.dataGrid1 = new System.Windows.Forms.DataGrid();
this.dataGridTableStyle1 = new System.Windows.Forms.DataGridTableStyle();
this.dataGridTextBoxColumn1 = new
System.Windows.Forms.DataGridTextBoxColumn();
this.dataGridTextBoxColumn2 = new
System.Windows.Forms.DataGridTextBoxColumn();
this.dataGridTextBoxColumn3 = new
System.Windows.Forms.DataGridTextBoxColumn();
this.dataGridTextBoxColumn4 = new
System.Windows.Forms.DataGridTextBoxColumn();
this.btnLoad = new System.Windows.Forms.Button();
this.tboxLookupZipCode = new System.Windows.Forms.TextBox();
this.lblLookupParameter = new System.Windows.Forms.Label();
this.btnOK = new System.Windows.Forms.Button();
this.btnCancel = new System.Windows.Forms.Button();
((System.ComponentModel.ISupportInitialize)(this.dsLookup1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).BeginInit();
this.SuspendLayout();
//
// sqlDataAdapter1
//
this.sqlDataAdapter1.SelectCommand = this.sqlSelectCommand1;
this.sqlDataAdapter1.TableMappings.AddRange(new
System.Data.Common.DataTableMapping[] {
new System.Data.Common.DataTableMapping("Table",
"p_getZipCodeData", new System.Data.Common.DataColumnMapping[] {
new
System.Data.Common.DataColumnMapping("zip", "zip"),
new
System.Data.Common.DataColumnMapping("city", "city"),
new
System.Data.Common.DataColumnMapping("county", "county"),
new
System.Data.Common.DataColumnMapping("state", "state"),
new
System.Data.Common.DataColumnMapping("zip_code_dtl_id",
"zip_code_dtl_id")})});
//
// sqlSelectCommand1
//
this.sqlSelectCommand1.CommandText = "[p_getZipCodeData]";
this.sqlSelectCommand1.CommandType =
System.Data.CommandType.StoredProcedure;
this.sqlSelectCommand1.Connection = this.sqlConnection1;
this.sqlSelectCommand1.Parameters.Add(new
System.Data.SqlClient.SqlParameter("@RETURN_VALUE",
System.Data.SqlDbType.Int, 4, System.Data.ParameterDirection.ReturnValue,
false, ((System.Byte)(0)), ((System.Byte)(0)), "",
System.Data.DataRowVersion.Current, null));
this.sqlSelectCommand1.Parameters.Add(new
System.Data.SqlClient.SqlParameter("@zip", System.Data.SqlDbType.VarChar,
10));
//
// sqlConnection1
//
this.sqlConnection1.ConnectionString = "workstation id=CENGENXP2;packet
size=4096;user id=sa;data source=cengenxp2;persis" +
"t security info=True;initial catalog=src;password=cocacola";
//
// dsLookup1
//
this.dsLookup1.DataSetName = "dsLookup";
this.dsLookup1.Locale = new System.Globalization.CultureInfo("en-US");
//
// dataGrid1
//
this.dataGrid1.DataMember = "p_getZipCodeData";
this.dataGrid1.DataSource = this.dsLookup1;
this.dataGrid1.HeaderForeColor = System.Drawing.SystemColors.ControlText;
this.dataGrid1.Location = new System.Drawing.Point(0, 40);
this.dataGrid1.Name = "dataGrid1";
this.dataGrid1.Size = new System.Drawing.Size(568, 288);
this.dataGrid1.TabIndex = 0;
this.dataGrid1.TableStyles.AddRange(new
System.Windows.Forms.DataGridTableStyle[] {
this.dataGridTableStyle1});
this.dataGrid1.Navigate += new
System.Windows.Forms.NavigateEventHandler(this.dataGrid1_Navigate);
//
// dataGridTableStyle1
//
this.dataGridTableStyle1.DataGrid = this.dataGrid1;
this.dataGridTableStyle1.GridColumnStyles.AddRange(new
System.Windows.Forms.DataGridColumnStyle[] {
this.dataGridTextBoxColumn1,
this.dataGridTextBoxColumn2,
this.dataGridTextBoxColumn3,
this.dataGridTextBoxColumn4});
this.dataGridTableStyle1.HeaderForeColor =
System.Drawing.SystemColors.ControlText;
this.dataGridTableStyle1.MappingName = "p_getZipCodeData";
//
// dataGridTextBoxColumn1
//
this.dataGridTextBoxColumn1.Format = "";
this.dataGridTextBoxColumn1.FormatInfo = null;
this.dataGridTextBoxColumn1.HeaderText = "Zip Code";
this.dataGridTextBoxColumn1.MappingName = "zip";
this.dataGridTextBoxColumn1.Width = 75;
//
// dataGridTextBoxColumn2
//
this.dataGridTextBoxColumn2.Format = "";
this.dataGridTextBoxColumn2.FormatInfo = null;
this.dataGridTextBoxColumn2.HeaderText = "City";
this.dataGridTextBoxColumn2.MappingName = "city";
this.dataGridTextBoxColumn2.Width = 75;
//
// dataGridTextBoxColumn3
//
this.dataGridTextBoxColumn3.Format = "";
this.dataGridTextBoxColumn3.FormatInfo = null;
this.dataGridTextBoxColumn3.HeaderText = "County";
this.dataGridTextBoxColumn3.MappingName = "county";
this.dataGridTextBoxColumn3.Width = 75;
//
// dataGridTextBoxColumn4
//
this.dataGridTextBoxColumn4.Format = "";
this.dataGridTextBoxColumn4.FormatInfo = null;
this.dataGridTextBoxColumn4.HeaderText = "State";
this.dataGridTextBoxColumn4.MappingName = "state";
this.dataGridTextBoxColumn4.Width = 75;
//
// btnLoad
//
this.btnLoad.Location = new System.Drawing.Point(472, 8);
this.btnLoad.Name = "btnLoad";
this.btnLoad.TabIndex = 2;
this.btnLoad.Text = "Load";
this.btnLoad.Click += new System.EventHandler(this.btnLoad_Click);
//
// tboxLookupZipCode
//
this.tboxLookupZipCode.Location = new System.Drawing.Point(136, 8);
this.tboxLookupZipCode.Name = "tboxLookupZipCode";
this.tboxLookupZipCode.Size = new System.Drawing.Size(200, 20);
this.tboxLookupZipCode.TabIndex = 1;
this.tboxLookupZipCode.Text = "";
//
// lblLookupParameter
//
this.lblLookupParameter.Location = new System.Drawing.Point(24, 8);
this.lblLookupParameter.Name = "lblLookupParameter";
this.lblLookupParameter.Size = new System.Drawing.Size(100, 20);
this.lblLookupParameter.TabIndex = 3;
this.lblLookupParameter.Text = "Zip Code";
this.lblLookupParameter.TextAlign =
System.Drawing.ContentAlignment.MiddleRight;
//
// btnOK
//
this.btnOK.DialogResult = System.Windows.Forms.DialogResult.OK;
this.btnOK.Location = new System.Drawing.Point(378, 352);
this.btnOK.Name = "btnOK";
this.btnOK.TabIndex = 3;
this.btnOK.Text = "OK";
this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
//
// btnCancel
//
this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.btnCancel.Location = new System.Drawing.Point(472, 352);
this.btnCancel.Name = "btnCancel";
this.btnCancel.TabIndex = 4;
this.btnCancel.Text = "Cancel";
this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click);
//
// fclsLookup
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(568, 390);
this.Controls.Add(this.btnCancel);
this.Controls.Add(this.btnOK);
this.Controls.Add(this.lblLookupParameter);
this.Controls.Add(this.tboxLookupZipCode);
this.Controls.Add(this.btnLoad);
this.Controls.Add(this.dataGrid1);
this.Name = "fclsLookup";
this.Text = "Lookup";
((System.ComponentModel.ISupportInitialize)(this.dsLookup1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).EndInit();
this.ResumeLayout(false);

}
#endregion


private void btnLoad_Click(object sender, System.EventArgs e)
{
sqlSelectCommand1.Parameters["@zip"].Value = tboxLookupZipCode.Text;
dsLookup1.Clear();
sqlDataAdapter1.Fill(dsLookup1);
}

private void btnOK_Click(object sender, System.EventArgs e)
{

Close();
}

private void btnCancel_Click(object sender, System.EventArgs e)
{
Close();
}

private void dataGrid1_Navigate(object sender,
System.Windows.Forms.NavigateEventArgs ne)
{

Close();
}

protected void dataGrid1_MouseDown(object sender,
System.Windows.Forms.MouseEventArgs e)
{
string strMessage = "TEST";

//strMessage = "Row: " + dataGrid1.HitTest(e.X,e.Y).Row.ToString();
int x = dataGrid1.HitTest(e.X, e.Y).Row;

strZipCode = dataGrid1[x, 0].ToString();
strZipCodeDtlId = dataGrid1[x, 3].ToString();
ZipCodeDtlId = strZipCodeDtlId;
MessageBox.Show(strZipCode);
MessageBox.Show("I still don't know what I'm doing, but I'm at " +
strMessage + ". I need to send back " + strZipCode);
}

}
}
 
G

Guest

Jeff,

I'm sorry but I don't understand how to implement your suggestion. Are you
suggesting that I create a new class called MyClass with a method called
LookupDone in it? Also, I've never used a structure. Which Class should the
structure be in? I know, you're thinking - he is a rookie. I do appreciate
your help though.

Thanks,
Johnny
 
G

Guest

Armen,

I appreciate your response but I'm not having a problem getting the zipcode
from the originating form. I'm having a problem sending back the selected
zipid to the originating form from the lookup form.

Thanks,
Johnny

Armen Kirakosyan said:
HI
you have two methods to pass
1. create public variable in the dialog which you want to open and pass zip
code to dialog before show it
2. you can pass that variable while you generate your dialog in new.


Dialog dlg=new Dialog();
dlg.zip=zip.text;
dlg.show;


Johnny said:
I'm a rookie at C# and OO so please don't laugh! I have a form
(fclsTaxCalculator) that contains a text box (tboxZipCode) containing a
zip
code. The user can enter a zip code in the text box and click a button to
determine whether the zip code is unique. If the zip code is not unique,
another form/dialog is displayed (fclsLookup) - lookup form/dialog. The
zip
code and zipid are both passed to the lookup form/dialog by reference. I
then load a datagrid with the possible matches (i.e. zip, city, county,
state, zipid).
When the user clicks the row in the datagrid, I want to pass the zipid
back
to the original form/dialog and run a stored procedure. My problem is I
do
not know how to get the ZipId back to the fclsTaxCalculator form/dialog.
I've not figured out how to set the variable that was passed in the
mousedown event. I've search for examples of this and I've not been able
to
track one down -
please help!!! My code is shown below:

//this is the event in the fclsTaxCalculator class that passes the ref
variables
private void lblZipCode_Click(object sender, System.EventArgs e)
{
strZipCode = tboxZip.Text;
fclsLookup objLookupForm = new fclsLookup(ref strZipCode, ref
strZipCodeDtlId);
objLookupForm.Show();
tboxZip.Text = strZipCode;
}

//this is the fclsLookup that receives the ref variable and I can't figure
out how to
//set the variables to the selected value.

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

namespace EnspireUtilities
{
/// <summary>
/// Summary description for Lookup.
/// </summary>
public class fclsLookup : System.Windows.Forms.Form
{
private System.Data.SqlClient.SqlDataAdapter sqlDataAdapter1;
private System.Data.SqlClient.SqlCommand sqlSelectCommand1;
private System.Data.SqlClient.SqlConnection sqlConnection1;
private EnspireUtilities.dsLookup dsLookup1;
private System.Windows.Forms.DataGrid dataGrid1;
private System.Windows.Forms.Button btnLoad;
private System.Windows.Forms.TextBox tboxLookupZipCode;
private System.Windows.Forms.Label lblLookupParameter;
private System.Windows.Forms.Button btnOK;
private System.Windows.Forms.Button btnCancel;
//private string strZipCode = string.Empty;
private System.Windows.Forms.DataGridTableStyle dataGridTableStyle1;
private System.Windows.Forms.DataGridTextBoxColumn dataGridTextBoxColumn1;
private System.Windows.Forms.DataGridTextBoxColumn dataGridTextBoxColumn2;
private System.Windows.Forms.DataGridTextBoxColumn dataGridTextBoxColumn3;
private System.Windows.Forms.DataGridTextBoxColumn dataGridTextBoxColumn4;
public string strZipCode = String.Empty;
public string strZipCodeDtlId = String.Empty;


/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;

public fclsLookup(ref string ZipCode, ref string ZipCodeDtlId)
{
//
// Required for Windows Form Designer support
//
InitializeComponent();

//
// TODO: Add any constructor code after InitializeComponent call
//
//tboxLookupZipCode.Text = ZipCode;
sqlSelectCommand1.Parameters["@zip"].Value = ZipCode;
dsLookup1.Clear();
sqlDataAdapter1.Fill(dsLookup1);
strZipCode = ZipCode;
strZipCodeDtlId = ZipCodeDtlId;
tboxLookupZipCode.Text = strZipCode;
this.dataGrid1.MouseDown += new
System.Windows.Forms.MouseEventHandler(this.dataGrid1_MouseDown);


}

/// <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.sqlDataAdapter1 = new System.Data.SqlClient.SqlDataAdapter();
this.sqlSelectCommand1 = new System.Data.SqlClient.SqlCommand();
this.sqlConnection1 = new System.Data.SqlClient.SqlConnection();
this.dsLookup1 = new EnspireUtilities.dsLookup();
this.dataGrid1 = new System.Windows.Forms.DataGrid();
this.dataGridTableStyle1 = new System.Windows.Forms.DataGridTableStyle();
this.dataGridTextBoxColumn1 = new
System.Windows.Forms.DataGridTextBoxColumn();
this.dataGridTextBoxColumn2 = new
System.Windows.Forms.DataGridTextBoxColumn();
this.dataGridTextBoxColumn3 = new
System.Windows.Forms.DataGridTextBoxColumn();
this.dataGridTextBoxColumn4 = new
System.Windows.Forms.DataGridTextBoxColumn();
this.btnLoad = new System.Windows.Forms.Button();
this.tboxLookupZipCode = new System.Windows.Forms.TextBox();
this.lblLookupParameter = new System.Windows.Forms.Label();
this.btnOK = new System.Windows.Forms.Button();
this.btnCancel = new System.Windows.Forms.Button();
((System.ComponentModel.ISupportInitialize)(this.dsLookup1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).BeginInit();
this.SuspendLayout();
//
// sqlDataAdapter1
//
this.sqlDataAdapter1.SelectCommand = this.sqlSelectCommand1;
this.sqlDataAdapter1.TableMappings.AddRange(new
System.Data.Common.DataTableMapping[] {
new System.Data.Common.DataTableMapping("Table",
"p_getZipCodeData", new System.Data.Common.DataColumnMapping[] {
new
System.Data.Common.DataColumnMapping("zip", "zip"),
new
System.Data.Common.DataColumnMapping("city", "city"),
new
System.Data.Common.DataColumnMapping("county", "county"),
new
System.Data.Common.DataColumnMapping("state", "state"),
new
System.Data.Common.DataColumnMapping("zip_code_dtl_id",
"zip_code_dtl_id")})});
//
// sqlSelectCommand1
//
this.sqlSelectCommand1.CommandText = "[p_getZipCodeData]";
this.sqlSelectCommand1.CommandType =
System.Data.CommandType.StoredProcedure;
this.sqlSelectCommand1.Connection = this.sqlConnection1;
this.sqlSelectCommand1.Parameters.Add(new
System.Data.SqlClient.SqlParameter("@RETURN_VALUE",
System.Data.SqlDbType.Int, 4, System.Data.ParameterDirection.ReturnValue,
false, ((System.Byte)(0)), ((System.Byte)(0)), "",
System.Data.DataRowVersion.Current, null));
this.sqlSelectCommand1.Parameters.Add(new
System.Data.SqlClient.SqlParameter("@zip", System.Data.SqlDbType.VarChar,
10));
//
// sqlConnection1
//
this.sqlConnection1.ConnectionString = "workstation id=CENGENXP2;packet
size=4096;user id=sa;data source=cengenxp2;persis" +
"t security info=True;initial catalog=src;password=cocacola";
//
// dsLookup1
//
this.dsLookup1.DataSetName = "dsLookup";
this.dsLookup1.Locale = new System.Globalization.CultureInfo("en-US");
//
// dataGrid1
//
this.dataGrid1.DataMember = "p_getZipCodeData";
this.dataGrid1.DataSource = this.dsLookup1;
this.dataGrid1.HeaderForeColor = System.Drawing.SystemColors.ControlText;
this.dataGrid1.Location = new System.Drawing.Point(0, 40);
this.dataGrid1.Name = "dataGrid1";
this.dataGrid1.Size = new System.Drawing.Size(568, 288);
this.dataGrid1.TabIndex = 0;
this.dataGrid1.TableStyles.AddRange(new
System.Windows.Forms.DataGridTableStyle[] {
this.dataGridTableStyle1});
this.dataGrid1.Navigate += new
System.Windows.Forms.NavigateEventHandler(this.dataGrid1_Navigate);
//
// dataGridTableStyle1
//
this.dataGridTableStyle1.DataGrid = this.dataGrid1;
this.dataGridTableStyle1.GridColumnStyles.AddRange(new
System.Windows.Forms.DataGridColumnStyle[] {
this.dataGridTextBoxColumn1,
this.dataGridTextBoxColumn2,
this.dataGridTextBoxColumn3,
this.dataGridTextBoxColumn4});
this.dataGridTableStyle1.HeaderForeColor =
System.Drawing.SystemColors.ControlText;
this.dataGridTableStyle1.MappingName = "p_getZipCodeData";
//
// dataGridTextBoxColumn1
//
this.dataGridTextBoxColumn1.Format = "";
this.dataGridTextBoxColumn1.FormatInfo = null;
this.dataGridTextBoxColumn1.HeaderText = "Zip Code";
this.dataGridTextBoxColumn1.MappingName = "zip";
this.dataGridTextBoxColumn1.Width = 75;
//
// dataGridTextBoxColumn2
//
this.dataGridTextBoxColumn2.Format = "";
this.dataGridTextBoxColumn2.FormatInfo = null;
this.dataGridTextBoxColumn2.HeaderText = "City";
this.dataGridTextBoxColumn2.MappingName = "city";
this.dataGridTextBoxColumn2.Width = 75;
//
// dataGridTextBoxColumn3
//
this.dataGridTextBoxColumn3.Format = "";
this.dataGridTextBoxColumn3.FormatInfo = null;
this.dataGridTextBoxColumn3.HeaderText = "County";
this.dataGridTextBoxColumn3.MappingName = "county";
this.dataGridTextBoxColumn3.Width = 75;
//
// dataGridTextBoxColumn4
//
this.dataGridTextBoxColumn4.Format = "";
this.dataGridTextBoxColumn4.FormatInfo = null;
this.dataGridTextBoxColumn4.HeaderText = "State";
this.dataGridTextBoxColumn4.MappingName = "state";
this.dataGridTextBoxColumn4.Width = 75;
//
// btnLoad
//
this.btnLoad.Location = new System.Drawing.Point(472, 8);
this.btnLoad.Name = "btnLoad";
this.btnLoad.TabIndex = 2;
this.btnLoad.Text = "Load";
this.btnLoad.Click += new System.EventHandler(this.btnLoad_Click);
//
// tboxLookupZipCode
//
this.tboxLookupZipCode.Location = new System.Drawing.Point(136, 8);
this.tboxLookupZipCode.Name = "tboxLookupZipCode";
this.tboxLookupZipCode.Size = new System.Drawing.Size(200, 20);
this.tboxLookupZipCode.TabIndex = 1;
this.tboxLookupZipCode.Text = "";
//
// lblLookupParameter
//
this.lblLookupParameter.Location = new System.Drawing.Point(24, 8);
this.lblLookupParameter.Name = "lblLookupParameter";
this.lblLookupParameter.Size = new System.Drawing.Size(100, 20);
this.lblLookupParameter.TabIndex = 3;
this.lblLookupParameter.Text = "Zip Code";
this.lblLookupParameter.TextAlign =
System.Drawing.ContentAlignment.MiddleRight;
//
// btnOK
//
this.btnOK.DialogResult = System.Windows.Forms.DialogResult.OK;
this.btnOK.Location = new System.Drawing.Point(378, 352);
this.btnOK.Name = "btnOK";
this.btnOK.TabIndex = 3;
this.btnOK.Text = "OK";
this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
//
// btnCancel
//
this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.btnCancel.Location = new System.Drawing.Point(472, 352);
this.btnCancel.Name = "btnCancel";
this.btnCancel.TabIndex = 4;
this.btnCancel.Text = "Cancel";
this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click);
//
// fclsLookup
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(568, 390);
this.Controls.Add(this.btnCancel);
this.Controls.Add(this.btnOK);
this.Controls.Add(this.lblLookupParameter);
this.Controls.Add(this.tboxLookupZipCode);
this.Controls.Add(this.btnLoad);
this.Controls.Add(this.dataGrid1);
this.Name = "fclsLookup";
this.Text = "Lookup";
((System.ComponentModel.ISupportInitialize)(this.dsLookup1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).EndInit();
this.ResumeLayout(false);

}
#endregion


private void btnLoad_Click(object sender, System.EventArgs e)
{
sqlSelectCommand1.Parameters["@zip"].Value = tboxLookupZipCode.Text;
dsLookup1.Clear();
sqlDataAdapter1.Fill(dsLookup1);
}

private void btnOK_Click(object sender, System.EventArgs e)
{

Close();
}

private void btnCancel_Click(object sender, System.EventArgs e)
{
Close();
}

private void dataGrid1_Navigate(object sender,
System.Windows.Forms.NavigateEventArgs ne)
{

Close();
}

protected void dataGrid1_MouseDown(object sender,
System.Windows.Forms.MouseEventArgs e)
{
string strMessage = "TEST";

//strMessage = "Row: " + dataGrid1.HitTest(e.X,e.Y).Row.ToString();
int x = dataGrid1.HitTest(e.X, e.Y).Row;

strZipCode = dataGrid1[x, 0].ToString();
strZipCodeDtlId = dataGrid1[x, 3].ToString();
ZipCodeDtlId = strZipCodeDtlId;
MessageBox.Show(strZipCode);
MessageBox.Show("I still don't know what I'm doing, but I'm at " +
strMessage + ". I need to send back " + strZipCode);
}

}
}
 
S

S. Senthil Kumar

If your dialog box is modal, just add a property to store the selected
zipid and then you can do
Dialog dlg=new Dialog();
dlg.zip=zip.text;
dlg.ShowDialog();
string selectedzip = dlg.SelectedZip;
 
J

Jeff Louie

Hi Johnny... The general answer is that you can pass a main form
reference
*this* that refers to the main form in the constructor of the dialog
form. (You
may have to extend the standard Dialog class to do this.) In the dialog
form
constructor store the reference in a field as in this.mainForm=
mainForm.
Now when the dialog is done you can notify the mainForm using the dialog
field this.mainForm. Any public method or field of mainForm should be
"touchable" using this.mainForm from within the dialog code. So you
could
set a variable in mainForm, or call a method in mainForm. You can even
declare a method in mainForm whose only purpose is to get the output
from
the dialog box.

TWISTED EXAMPLE

So if the dialog box purpose was to get the location of the klingon
control
center then you could declare a method in the main form called:

public void BeamMeUpScotty(location loc);

Now from the dialog box, get the klingon location and then call
this.mainForm.BeamMeUpScotty(klingonLocation).

In the main form do some beaming

public void BeamMeUpScotty(location loc) {
try {
WaitUntilLastPossibleSecondBeforeDisaster()
Enterprise.TransporterServices.Serialize(CaptainKirk, loc);
}
finally {
Enterprise.TransporterServices.Deserialize(CaptainKirk,
enterprise);
}
}

Don't worry about structs for now, but readonly classes are useful.

Regards,
Jeff
I'm sorry but I don't understand how to implement your suggestion. Are
you
suggesting that I create a new class called MyClass with a method called
LookupDone in it? Also, I've never used a structure. Which Class should
the
structure be in? I know, you're thinking - he is a rookie. I do
appreciate
your help though.<
 
J

Jeff Louie

BTW, Kumar's solution is a lot easier if you are willing to put up a
modal dialog box. The code will block until the dialog box returns and
you can get the zip out of a field in the dialog box and then let the
reference to the dialog box go out of scope in the method.

Regards,
Jeff
 
B

Bruce Wood

Your first difficulty, I think, is that you are invoking your form
incorrectly given what you want to do. If you use objLookupForm.Show()
then the form will come up as non-modal, and the user will still be
able to interact with the parent form. In effect, the form will be
displayed, but your code in the calling form will go on running, so
your line immediately following this that tries to get the zip code
that the user chose will run before the user has a chance to do
anything.

You probably want something like this, instead:

private void lblZipCode_Click(object sender, System.EventArgs e)
{
strZipCode = tboxZip.Text;
fclsLookup objLookupForm = new fclsLookup(strZipCode,
strZipCodeDtlId);
if (objLookupForm.ShowDialog() == DialogResult.OK)
{
tboxZip.Text = objLookupForm.ChosenZipCode;
}
objLookupForm.Dispose();
}

(By the way, declaring the string arguments "ref" is unnecessary.)

Then, in your fclsLookup form, you need a property:

public string ChosenZipCode
{
get { return this.chosenZip; }
}

where "chosenZip" gets set when the user clicks on the data grid:

protected void dataGrid1_MouseDown(object sender,
System.Windows.Forms.MouseEventArgs e)
{
string strMessage = "TEST";


//strMessage = "Row: " +
dataGrid1.HitTest(e.X,e.Y).Row.ToString();
int x = dataGrid1.HitTest(e.X, e.Y).Row;


strZipCode = dataGrid1[x, 0].ToString();
strZipCodeDtlId = dataGrid1[x, 3].ToString();
ZipCodeDtlId = strZipCodeDtlId;
this.chosenZip = strZipCode;
MessageBox.Show(strZipCode);
MessageBox.Show("I still don't know what I'm
doing, but I'm at " +
strMessage + ". I need to send back " + strZipCode);
}

If you need to return more information, just make more public
properties.

The only thing I don't know how to do is close your form with a
DialogResult.OK result from within the MouseDown event.
 
G

Guest

Kumar,

Thanks a lot, this is exactly what I was trying to accomplish. Thanks a
bunch!!!
 
G

Guest

Jeff,

I really appreciate the explanation. I'm a rookie and just trying to
understand how all of this works. Your explanation was both insightful and
workable. Thanks a bunch!!!
 
G

Guest

Bruce,

I see now that there are several ways to accomplish this. I tried to use
the getter but I couldn't figure it out. Your exmple has cleared things up
for me when using this approach. Thanks a bunch!!!
 

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