473,326 Members | 2,168 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,326 software developers and data experts.

Passing parameters between form classes - C#

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 is 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 search for examples of this and I've not been able to track one down -
please help!!!
Nov 17 '05 #1
8 4379
"Johnny" <Jo****@discussions.microsoft.com> wrote in message
news:8E**********************************@microsof t.com...
I'm a rookie at C# and OO so please don't laugh!


We won't. This is a C++ group. Try posting in

microsoft.public.dotnet.languages.csharp

Regards,
Will
Nov 17 '05 #2
Hello !

There are no stupid questions.

The forms you define in C# always consist of a class. A single form is a
single class. Thus, your problem comes from the interaction between classes.
You already knew this, however.

So, in addition to passing a reference variable to the zip code the user has
entered (the one which you wish to check), pass in another reference to the
ACTUAL zip code returned by the lookup form. Now, when the lookup form is
launched, you use the first reference to pass in the zipcode and initialize
the datagrid to show possible values, and the second reference to pass back
the value which the user clicked on in the datagrid.

Here's the most simplest example I can think of. It's written in C++, but
the language syntax is pretty much similar in C#.

class MyForm1
{
public:
int m_nUsersZipCode;
int m_nDatagridResult;
MyForm2* m_pLookupForm;
};

class MyForm2
{
public:
DWORD ValidateZipCode(int& nRefSource, int& nRefSelected);
};

int main(void)
{
MyForm1 form1;
MyForm2 form2;
form1.Show();
}

// In the ShowLookupForm handler of MyForm1
..
m_pLookupForm->ValidateZipCode( m_nUsersZipCode,
m_nDatagridResult );
..

This would be the most simplistic way to accomplish it. The problem itself
is not C# related by nature, thus it's quite easy to answer it.

-Antti Keskinen

"Johnny" <Jo****@discussions.microsoft.com> wrote in message
news:8E**********************************@microsof t.com...
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 is 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 search for examples of this and I've not been able to track one
down -
please help!!!

Nov 17 '05 #3
Antti,

I really appreciate the feedback. I should have stated the fact that I am
passing two variables by reference but I don't know how to set the variable
that I pass to the second form to the value selected in the second form.
When I try to set the variable. I get a message from the compiler that
states the varaible does not exist in the namespace. My code is below.

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.dataGr id1_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.d sLookup1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.d ataGrid1)).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.dat aGrid1_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.d sLookup1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.d ataGrid1)).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();
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);
}

}
}

"Antti Keskinen" wrote:
Hello !

There are no stupid questions.

The forms you define in C# always consist of a class. A single form is a
single class. Thus, your problem comes from the interaction between classes.
You already knew this, however.

So, in addition to passing a reference variable to the zip code the user has
entered (the one which you wish to check), pass in another reference to the
ACTUAL zip code returned by the lookup form. Now, when the lookup form is
launched, you use the first reference to pass in the zipcode and initialize
the datagrid to show possible values, and the second reference to pass back
the value which the user clicked on in the datagrid.

Here's the most simplest example I can think of. It's written in C++, but
the language syntax is pretty much similar in C#.

class MyForm1
{
public:
int m_nUsersZipCode;
int m_nDatagridResult;
MyForm2* m_pLookupForm;
};

class MyForm2
{
public:
DWORD ValidateZipCode(int& nRefSource, int& nRefSelected);
};

int main(void)
{
MyForm1 form1;
MyForm2 form2;
form1.Show();
}

// In the ShowLookupForm handler of MyForm1
..
m_pLookupForm->ValidateZipCode( m_nUsersZipCode,
m_nDatagridResult );
..

This would be the most simplistic way to accomplish it. The problem itself
is not C# related by nature, thus it's quite easy to answer it.

-Antti Keskinen

"Johnny" <Jo****@discussions.microsoft.com> wrote in message
news:8E**********************************@microsof t.com...
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 is 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 search for examples of this and I've not been able to track one
down -
please help!!!


Nov 17 '05 #4
If I have some C++ code and I can successfully call a C# assembly but cannot
access the variables in the C# assembly, would I post my question here or in
the C# forum? :D
--
Thanks,

Michael S. Wells \|/
Software Engineer ^O-O^
---------------------------o00o--(_)--o00o----------------------------

"William DePalo [MVP VC++]" wrote:
"Johnny" <Jo****@discussions.microsoft.com> wrote in message
news:8E**********************************@microsof t.com...
I'm a rookie at C# and OO so please don't laugh!


We won't. This is a C++ group. Try posting in

microsoft.public.dotnet.languages.csharp

Regards,
Will

May 8 '06 #5
"RedJoy" <Re****@discussions.microsoft.com> wrote in message
news:61**********************************@microsof t.com...
If I have some C++ code and I can successfully call a C# assembly but
cannot
access the variables in the C# assembly, would I post my question here or
in
the C# forum? :D


I don't think that anyone is going to bite your head off over where to place
an interop question.

I'd suggest you post a _small_ amount of code that exhibits your problem. Is
it a simple issue of data member visibility?

Regards,
Will


May 8 '06 #6
I have inherited a huge multi project VS2003 .NET solution:
Two of the projects call the same dialog boxes but have differences within
the classes.
For maintainability and future conversion to VS2005 C# Main GUI I was
creating a C# Windows Form:

1) I finally managed to call the Windows Form.
2) I receive error C2039: 'm_nConnType' : is not a member of
'DialogLibrary::OpenSysbusSocket': see declaration of
'DialogLibrary::OpenSysbusSocket' when I build the solution.

Here is my C++ code:

#include "stdafx.h"
#include "genui.h"
#include "opensysb.h"
#include "genuidlg.h"
#include "cmdid.h"
#include "SysArray.h"

//I added the #using statements
#using <System.Windows.Forms.dll>
#using <system.dll>
#using <mscorlib.dll>
#using <DialogLibrary.dll>

IMPLEMENT_SERIAL (COpenSysbusIMDO, CIMDO, 1)
MIRAgEProcType COpenSysbusIMDO::m_nDest = user_defined;
struct OpenStruct
{
ConnectMethod CM;//defined in sysbsock.h
MIRAgEProcType nDest;
char szDestHostName [16];
};

COpenSysbusIMDO::COpenSysbusIMDO()
{
}

COpenSysbusIMDO::~COpenSysbusIMDO() {}

int COpenSysbusIMDO::RetrieveData(BOOL bEditFlag)
{
//COpenSysbusDlg dlg;
//I replaced the above line with the following line
DialogLibrary::OpenSysbusSocket *dlg = new
DialogLibrary::OpenSysbusSocket;

int nResult;

OpenStruct* pData = (OpenStruct*)m_sData.GetBufferSetLength(sizeof
OpenStruct);

if (bEditFlag)
{
if (m_mpDest != scmt)
{
// processing open sysbus socket
//dlg.m_nSim = (int)m_mpDest;
//I changed the notation from '.' to '->'
dlg->m_nConnType = (int)(pData->CM) - 1;
}
}

// set remaining member variables to indicate a Open SYSBUS Socket
command
m_dwParam = OpenSysbus;
m_nDest = pData->nDest;
m_sData.ReleaseBuffer(sizeof OpenStruct);
return nResult;
}

---------------------------------------------------------------------
Here is part of my C# class"

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

namespace DialogLibrary
{
/// <summary>
/// Summary description for Class1.
/// </summary>
public class OpenSysbusSocket : Form
{
// private members
int m_nSim;
int m_nConnType;
int m_nDest;
int m_nDestPort;
int m_nPortNumber;

// empty constructor
public OpenSysbusSocket()
{
InitializeComponent();

this.m_nSim = 0;
this.m_nConnType = 0;
this.m_nDest = 0;
this.m_nDestPort = 0;
this.CalcPort();
}

// full constructor
public OpenSysbusSocket ( int nSim, int nConnType, int nDest, int
nDestPort, int nPortNumber)
{
this.m_nSim = nSim;
this.m_nConnType = nConnType;
this.m_nDest = nDest;
this.m_nDestPort = nDestPort;
this.CalcPort();
}

// public accessors
public int nSim
{
get { return m_nSim;}
set { m_nSim = value; }
}
public int nConnType
{
get { return m_nConnType;}
set { m_nConnType = value; }
}
public int nDest
{
get { return m_nDest;}
set { m_nDest = value; }
}
public int nDestPort
{
get { return m_nDestPort;}
set { m_nDestPort = value; }
}
public int nPortNumber
{
get { return m_nPortNumber;}
set { m_nPortNumber = value; }
}
}
}

--
Thanks,

Michael S. Wells \|/
Software Engineer ^O-O^
---------------------------o00o--(_)--o00o----------------------------

"RedJoy" wrote:
If I have some C++ code and I can successfully call a C# assembly but cannot
access the variables in the C# assembly, would I post my question here or in
the C# forum? :D
--
Thanks,

Michael S. Wells \|/
Software Engineer ^O-O^
---------------------------o00o--(_)--o00o----------------------------

"William DePalo [MVP VC++]" wrote:
"Johnny" <Jo****@discussions.microsoft.com> wrote in message
news:8E**********************************@microsof t.com...
I'm a rookie at C# and OO so please don't laugh!


We won't. This is a C++ group. Try posting in

microsoft.public.dotnet.languages.csharp

Regards,
Will

May 8 '06 #7
I have inherited a huge multi project VS2003 .NET solution:
Two of the projects call the same dialog boxes but have differences within
the classes.
For maintainability and future conversion to VS2005 C# Main GUI I was
creating a C# Windows Form:

1) I finally managed to call the Windows Form.
2) I receive error C2039: 'm_nConnType' : is not a member of
'DialogLibrary::OpenSysbusSocket': see declaration of
'DialogLibrary::OpenSysbusSocket' when I build the solution.

Here is my C++ code:

#include "stdafx.h"
#include "genui.h"
#include "opensysb.h"
#include "genuidlg.h"
#include "cmdid.h"
#include "SysArray.h"

//I added the #using statements
#using <System.Windows.Forms.dll>
#using <system.dll>
#using <mscorlib.dll>
#using <DialogLibrary.dll>

IMPLEMENT_SERIAL (COpenSysbusIMDO, CIMDO, 1)
MIRAgEProcType COpenSysbusIMDO::m_nDest = user_defined;
struct OpenStruct
{
ConnectMethod CM;//defined in sysbsock.h
MIRAgEProcType nDest;
char szDestHostName [16];
};

COpenSysbusIMDO::COpenSysbusIMDO()
{
}

COpenSysbusIMDO::~COpenSysbusIMDO() {}

int COpenSysbusIMDO::RetrieveData(BOOL bEditFlag)
{
//COpenSysbusDlg dlg;
//I replaced the above line with the following line
DialogLibrary::OpenSysbusSocket *dlg = new
DialogLibrary::OpenSysbusSocket;

int nResult;

OpenStruct* pData = (OpenStruct*)m_sData.GetBufferSetLength(sizeof
OpenStruct);

if (bEditFlag)
{
if (m_mpDest != scmt)
{
// processing open sysbus socket
//dlg.m_nSim = (int)m_mpDest;
//I changed the notation from '.' to '->'
dlg->m_nConnType = (int)(pData->CM) - 1;
}
}

// set remaining member variables to indicate a Open SYSBUS Socket
command
m_dwParam = OpenSysbus;
m_nDest = pData->nDest;
m_sData.ReleaseBuffer(sizeof OpenStruct);
return nResult;
}

---------------------------------------------------------------------
Here is part of my C# class"

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

namespace DialogLibrary
{
/// <summary>
/// Summary description for Class1.
/// </summary>
public class OpenSysbusSocket : Form
{
// private members
int m_nSim;
int m_nConnType;
int m_nDest;
int m_nDestPort;
int m_nPortNumber;

// empty constructor
public OpenSysbusSocket()
{
InitializeComponent();

this.m_nSim = 0;
this.m_nConnType = 0;
this.m_nDest = 0;
this.m_nDestPort = 0;
this.CalcPort();
}

// full constructor
public OpenSysbusSocket ( int nSim, int nConnType, int nDest, int
nDestPort, int nPortNumber)
{
this.m_nSim = nSim;
this.m_nConnType = nConnType;
this.m_nDest = nDest;
this.m_nDestPort = nDestPort;
this.CalcPort();
}

// public accessors
public int nSim
{
get { return m_nSim;}
set { m_nSim = value; }
}
public int nConnType
{
get { return m_nConnType;}
set { m_nConnType = value; }
}
public int nDest
{
get { return m_nDest;}
set { m_nDest = value; }
}
public int nDestPort
{
get { return m_nDestPort;}
set { m_nDestPort = value; }
}
public int nPortNumber
{
get { return m_nPortNumber;}
set { m_nPortNumber = value; }
}
}
}
--
Thanks,

Michael S. Wells \|/
Software Engineer ^O-O^
---------------------------o00o--(_)--o00o----------------------------

"William DePalo [MVP VC++]" wrote:
"RedJoy" <Re****@discussions.microsoft.com> wrote in message
news:61**********************************@microsof t.com...
If I have some C++ code and I can successfully call a C# assembly but
cannot
access the variables in the C# assembly, would I post my question here or
in
the C# forum? :D


I don't think that anyone is going to bite your head off over where to place
an interop question.

I'd suggest you post a _small_ amount of code that exhibits your problem. Is
it a simple issue of data member visibility?

Regards,
Will


May 8 '06 #8
Besides the mistake of trying to access the private variables instead of the
accessor methods, I added my DialogLibrary class as a reference to the
project that uses the Windows Form and it compiled/executed and updated the
variables.
--
Thanks,

Michael S. Wells \|/
Software Engineer ^O-O^
---------------------------o00o--(_)--o00o----------------------------

"RedJoy" wrote:
I have inherited a huge multi project VS2003 .NET solution:
Two of the projects call the same dialog boxes but have differences within
the classes.
For maintainability and future conversion to VS2005 C# Main GUI I was
creating a C# Windows Form:

1) I finally managed to call the Windows Form.
2) I receive error C2039: 'm_nConnType' : is not a member of
'DialogLibrary::OpenSysbusSocket': see declaration of
'DialogLibrary::OpenSysbusSocket' when I build the solution.

Here is my C++ code:

#include "stdafx.h"
#include "genui.h"
#include "opensysb.h"
#include "genuidlg.h"
#include "cmdid.h"
#include "SysArray.h"

//I added the #using statements
#using <System.Windows.Forms.dll>
#using <system.dll>
#using <mscorlib.dll>
#using <DialogLibrary.dll>

IMPLEMENT_SERIAL (COpenSysbusIMDO, CIMDO, 1)
MIRAgEProcType COpenSysbusIMDO::m_nDest = user_defined;
struct OpenStruct
{
ConnectMethod CM;//defined in sysbsock.h
MIRAgEProcType nDest;
char szDestHostName [16];
};

COpenSysbusIMDO::COpenSysbusIMDO()
{
}

COpenSysbusIMDO::~COpenSysbusIMDO() {}

int COpenSysbusIMDO::RetrieveData(BOOL bEditFlag)
{
//COpenSysbusDlg dlg;
//I replaced the above line with the following line
DialogLibrary::OpenSysbusSocket *dlg = new
DialogLibrary::OpenSysbusSocket;

int nResult;

OpenStruct* pData = (OpenStruct*)m_sData.GetBufferSetLength(sizeof
OpenStruct);

if (bEditFlag)
{
if (m_mpDest != scmt)
{
// processing open sysbus socket
//dlg.m_nSim = (int)m_mpDest;
//I changed the notation from '.' to '->'
dlg->m_nConnType = (int)(pData->CM) - 1;
}
}

// set remaining member variables to indicate a Open SYSBUS Socket
command
m_dwParam = OpenSysbus;
m_nDest = pData->nDest;
m_sData.ReleaseBuffer(sizeof OpenStruct);
return nResult;
}

---------------------------------------------------------------------
Here is part of my C# class"

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

namespace DialogLibrary
{
/// <summary>
/// Summary description for Class1.
/// </summary>
public class OpenSysbusSocket : Form
{
// private members
int m_nSim;
int m_nConnType;
int m_nDest;
int m_nDestPort;
int m_nPortNumber;

// empty constructor
public OpenSysbusSocket()
{
InitializeComponent();

this.m_nSim = 0;
this.m_nConnType = 0;
this.m_nDest = 0;
this.m_nDestPort = 0;
this.CalcPort();
}

// full constructor
public OpenSysbusSocket ( int nSim, int nConnType, int nDest, int
nDestPort, int nPortNumber)
{
this.m_nSim = nSim;
this.m_nConnType = nConnType;
this.m_nDest = nDest;
this.m_nDestPort = nDestPort;
this.CalcPort();
}

// public accessors
public int nSim
{
get { return m_nSim;}
set { m_nSim = value; }
}
public int nConnType
{
get { return m_nConnType;}
set { m_nConnType = value; }
}
public int nDest
{
get { return m_nDest;}
set { m_nDest = value; }
}
public int nDestPort
{
get { return m_nDestPort;}
set { m_nDestPort = value; }
}
public int nPortNumber
{
get { return m_nPortNumber;}
set { m_nPortNumber = value; }
}
}
}
--
Thanks,

Michael S. Wells \|/
Software Engineer ^O-O^
---------------------------o00o--(_)--o00o----------------------------

"William DePalo [MVP VC++]" wrote:
"RedJoy" <Re****@discussions.microsoft.com> wrote in message
news:61**********************************@microsof t.com...
If I have some C++ code and I can successfully call a C# assembly but
cannot
access the variables in the C# assembly, would I post my question here or
in
the C# forum? :D


I don't think that anyone is going to bite your head off over where to place
an interop question.

I'd suggest you post a _small_ amount of code that exhibits your problem. Is
it a simple issue of data member visibility?

Regards,
Will


May 8 '06 #9

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

2
by: zlatko | last post by:
There is a form in an Access Project (.adp, Access front end with SQL Server) for entering data into a table for temporary storing. Then, by clicking a botton, several action stored procedures...
3
by: domeceo | last post by:
can anyone tell me why I cannot pass values in a setTimeout function whenever I use this function it says "menu is undefined" after th alert. function imgOff(menu, num) { if (document.images) {...
10
by: Patrick Stinson | last post by:
What sort of operations can one do with classes? I know class A{}; typeid(A); works, but what else can you do? Is there a way to pass a class as a parameter to a function? class pointers? how...
7
by: Harolds | last post by:
The code below worked in VS 2003 & dotnet framework 1.1 but now in VS 2005 the pmID is evaluated to "" instead of what the value is set to: .... xmlItems.Document = pmXML // Add the pmID...
6
by: Jared | last post by:
Hi Does anyone know how could I load a form from another and send some parameters to it? Is there a way to identify by name instances of same form? Thx
11
by: Arsen Vladimirskiy | last post by:
Hello, If I have a few simple classes to represent Entities such as Customers and Orders. What is the proper way to pass information to the Data Access Layer? 1) Pass the actual ENTITY to...
11
by: Johnny | last post by:
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...
3
by: Marc Castrechini | last post by:
First off this is a great reference for passing data between the Data Access and Business Layers:...
12
by: scottt | last post by:
hi, I am having a little problem passing in reference of my calling class (in my ..exe)into a DLL. Both programs are C# and what I am trying to do is pass a reference to my one class into a DLL...
0
by: DolphinDB | last post by:
Tired of spending countless mintues downsampling your data? Look no further! In this article, you’ll learn how to efficiently downsample 6.48 billion high-frequency records to 61 million...
0
by: ryjfgjl | last post by:
ExcelToDatabase: batch import excel into database automatically...
0
isladogs
by: isladogs | last post by:
The next Access Europe meeting will be on Wednesday 6 Mar 2024 starting at 18:00 UK time (6PM UTC) and finishing at about 19:15 (7.15PM). In this month's session, we are pleased to welcome back...
0
by: jfyes | last post by:
As a hardware engineer, after seeing that CEIWEI recently released a new tool for Modbus RTU Over TCP/UDP filtering and monitoring, I actively went to its official website to take a look. It turned...
1
by: PapaRatzi | last post by:
Hello, I am teaching myself MS Access forms design and Visual Basic. I've created a table to capture a list of Top 30 singles and forms to capture new entries. The final step is a form (unbound)...
1
by: Shællîpôpï 09 | last post by:
If u are using a keypad phone, how do u turn on JavaScript, to access features like WhatsApp, Facebook, Instagram....
0
by: af34tf | last post by:
Hi Guys, I have a domain whose name is BytesLimited.com, and I want to sell it. Does anyone know about platforms that allow me to list my domain in auction for free. Thank you
0
by: Faith0G | last post by:
I am starting a new it consulting business and it's been a while since I setup a new website. Is wordpress still the best web based software for hosting a 5 page website? The webpages will be...
0
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 3 Apr 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome former...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.