19 个解决方案
#1
跨页传值,常用有以下几种方法,楼主可以参考一下:
一. 使用QueryString变量
QueryString是一种非常简单也是使用比较多的一种传值方式,但是它将传递的值显示在浏览器的地址栏中,如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法。
Response.Redirect( "target.aspx?param1=hello¶m2=hi ")
接收页面: string str = Request.QueryString["param1"];
string str1 = Request.QueryString["param2];
二.使用Cookie对象变量(Cookie是存放在客户端的)
设置Cookie: HttpCookie cookie_name = new HttpCookie("name");
cookie_name.Value = Label1.Text;
Reponse.AppendCookie(cookie_name);
获取Cookie:
string name= Request.Cookie["name"].Value.ToString();
三. 使用Session变量(session是存放在服务器端的)
设置Session: Session["name"] ="hello";
获取Session: string name = Session["name"].ToString();
四.使用Application 对象变量
Application对象的作用范围是整个全局,也就是说对所有用户都有效。此种方法不常使用,因为Application在一个应用程序域范围共享,所有用户可以改变及设置其值,故只应用计数器等需要全局变量的地方。
设置Application : Application["name"] = ="hello";
获取Application : string name = Application["name"].ToString();
五. PostBackUrl()方法
default.aspx页面:
Code
1 <asp:Button ID="Button1" Runat="server" Text="PostToAnotherPage" PostBackUrl="~/Default2.aspx" />
2
default2.aspx页面:
Code
1 if (PreviousPage != null)
2 {
3 TextBox textBox1 = (TextBox)PreviousPage.FindControl("TextBox1");
4 Response.write(textBox1.Text );
5 }
六.使用Server.Transfer方法
这个才可以说是面象对象开发所使用的方法,其使用Server.Transfer方法把流程从当前页面引导到另一个页面中,新的页面使用前一个页面的应答流,所以这个方法是完全面象对象的,简洁有效。下面这个代码是展示在需要很多个参数的时候,使用的方法,如果参数比较少就没必要使用这个方法了.
如果让所有的查询页面都继承一个接口,在该接口中定义一个方法,该方法的唯一作用就是让结果页面获得构建结果时所需的参数,就可实现多页面共享一个结果页面操作!
1、先定义一个类,用该类放置所有查询参数:
Code
/**//// <summary>
/// QueryParams 的摘要说明
/// </summary>
public class QueryParams
{
private string firstName;
private string lastname;
private int age;
public string Firstname
{
get { return this.firstname; }
set { this.firstname = value; }
}
public string LastName
{
get { return this.lastname; }
set { this.lastname = value; }
}
public string Age
{
get { return this.age; }
set { this.age = value; }
}
}
2、接口定义:
Code
/**//// <summary >
/// 定义查询接口。
/// </summary >
public interface IQueryParams
{
/**//// <summary >
/// 参数
/// </summary >
QueryParams Parameters { get;}
}
3、查询页面继承IQueryParams接口(QueryPage.aspx):
QueryPage.aspx
Code
<form id="form1" runat="server">
<div>
<asp:TextBox ID="txtFirstName" runat="server"></asp:TextBox>
<asp:TextBox ID="txtLastName" runat="server"></asp:TextBox>
<asp:TextBox ID="txtAge" runat="server"></asp:TextBox>
<asp:Button ID="btnEnter" runat="server" Text="Button" OnClick="btnEnter_Click" /></div>
</form>
QueryPage.aspx.cs
Code
public partial class QueryPage : System.Web.UI.Page, IQueryParams
{
private QueryParams queryParams;
public QueryParams Parameters
{
get
{
return queryParams;
}
}
public void btnEnter_Click(object sender, System.EventArgs e)
{
//赋值
queryParams = new QueryParams();
queryParams.FirstnName = this.txtFirstName.Text;
queryParams.Lastname = this.txtLastName.Text;
queryParams.Age = this.txtAge.Text;
Server.Transfer( "ResultPage.aspx ");
}
protected void Page_Load(object sender, EventArgs e)
{ }
}
4、接收页面(ResultPage.aspx):
ResultPage.aspx.cs
public partial class ResultPage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
QueryParams queryParams = new QueryParams();
IQueryParams queryInterface;
//实现该接口的页面
if (Context.Handler is IQueryParams)
{
queryInterface = (IQueryParams)Context.Handler;
queryParams = queryInterface.Parameters;
}
Response.Write("FirstName: ");
Response.Write(queryParams.FirstName);
Response.Write(" <br/ >Lastname: ");
Response.Write(queryParams.LastName);
Response.Write(" <br/ >Age: ");
Response.Write(queryParams.Age);
}
}
一. 使用QueryString变量
QueryString是一种非常简单也是使用比较多的一种传值方式,但是它将传递的值显示在浏览器的地址栏中,如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法。
Response.Redirect( "target.aspx?param1=hello¶m2=hi ")
接收页面: string str = Request.QueryString["param1"];
string str1 = Request.QueryString["param2];
二.使用Cookie对象变量(Cookie是存放在客户端的)
设置Cookie: HttpCookie cookie_name = new HttpCookie("name");
cookie_name.Value = Label1.Text;
Reponse.AppendCookie(cookie_name);
获取Cookie:
string name= Request.Cookie["name"].Value.ToString();
三. 使用Session变量(session是存放在服务器端的)
设置Session: Session["name"] ="hello";
获取Session: string name = Session["name"].ToString();
四.使用Application 对象变量
Application对象的作用范围是整个全局,也就是说对所有用户都有效。此种方法不常使用,因为Application在一个应用程序域范围共享,所有用户可以改变及设置其值,故只应用计数器等需要全局变量的地方。
设置Application : Application["name"] = ="hello";
获取Application : string name = Application["name"].ToString();
五. PostBackUrl()方法
default.aspx页面:
Code
1 <asp:Button ID="Button1" Runat="server" Text="PostToAnotherPage" PostBackUrl="~/Default2.aspx" />
2
default2.aspx页面:
Code
1 if (PreviousPage != null)
2 {
3 TextBox textBox1 = (TextBox)PreviousPage.FindControl("TextBox1");
4 Response.write(textBox1.Text );
5 }
六.使用Server.Transfer方法
这个才可以说是面象对象开发所使用的方法,其使用Server.Transfer方法把流程从当前页面引导到另一个页面中,新的页面使用前一个页面的应答流,所以这个方法是完全面象对象的,简洁有效。下面这个代码是展示在需要很多个参数的时候,使用的方法,如果参数比较少就没必要使用这个方法了.
如果让所有的查询页面都继承一个接口,在该接口中定义一个方法,该方法的唯一作用就是让结果页面获得构建结果时所需的参数,就可实现多页面共享一个结果页面操作!
1、先定义一个类,用该类放置所有查询参数:
Code
/**//// <summary>
/// QueryParams 的摘要说明
/// </summary>
public class QueryParams
{
private string firstName;
private string lastname;
private int age;
public string Firstname
{
get { return this.firstname; }
set { this.firstname = value; }
}
public string LastName
{
get { return this.lastname; }
set { this.lastname = value; }
}
public string Age
{
get { return this.age; }
set { this.age = value; }
}
}
2、接口定义:
Code
/**//// <summary >
/// 定义查询接口。
/// </summary >
public interface IQueryParams
{
/**//// <summary >
/// 参数
/// </summary >
QueryParams Parameters { get;}
}
3、查询页面继承IQueryParams接口(QueryPage.aspx):
QueryPage.aspx
Code
<form id="form1" runat="server">
<div>
<asp:TextBox ID="txtFirstName" runat="server"></asp:TextBox>
<asp:TextBox ID="txtLastName" runat="server"></asp:TextBox>
<asp:TextBox ID="txtAge" runat="server"></asp:TextBox>
<asp:Button ID="btnEnter" runat="server" Text="Button" OnClick="btnEnter_Click" /></div>
</form>
QueryPage.aspx.cs
Code
public partial class QueryPage : System.Web.UI.Page, IQueryParams
{
private QueryParams queryParams;
public QueryParams Parameters
{
get
{
return queryParams;
}
}
public void btnEnter_Click(object sender, System.EventArgs e)
{
//赋值
queryParams = new QueryParams();
queryParams.FirstnName = this.txtFirstName.Text;
queryParams.Lastname = this.txtLastName.Text;
queryParams.Age = this.txtAge.Text;
Server.Transfer( "ResultPage.aspx ");
}
protected void Page_Load(object sender, EventArgs e)
{ }
}
4、接收页面(ResultPage.aspx):
ResultPage.aspx.cs
public partial class ResultPage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
QueryParams queryParams = new QueryParams();
IQueryParams queryInterface;
//实现该接口的页面
if (Context.Handler is IQueryParams)
{
queryInterface = (IQueryParams)Context.Handler;
queryParams = queryInterface.Parameters;
}
Response.Write("FirstName: ");
Response.Write(queryParams.FirstName);
Response.Write(" <br/ >Lastname: ");
Response.Write(queryParams.LastName);
Response.Write(" <br/ >Age: ");
Response.Write(queryParams.Age);
}
}
#2
通过form2的构造函数
private string m_str;
public form2(string str)
{
m_str=str;
}
form2 frm=new form2(label1.Text);//
private string m_str;
public form2(string str)
{
m_str=str;
}
form2 frm=new form2(label1.Text);//
#3
label2.Text=m_str;//
#4
使用SendMessage或者PostMessage方法
在form1中写入上述代码,然后这样使用
PostMess(this.Handle.toInt32(),label1.text)
然后再Form2中写入下面的代码
如果传递的时候form2没有创建,可以在form1中这样写
Form2 frm=new Form2();
frm.label2.text=label1.text;
frm.show();
[DllImport("user32.dll")]
public static extern IntPtr PostMessage(int hWnd, int Msg, IntPtr wParam, int lParam);
public const int WM_USER = 0x0400;//用户自定义消息
public const int WM_POSTMESSAGE = WM_USER + 1000;//发送信息
public const int defaultlParam = 0;
/// <summary>
/// PostMessage方法发送消息
/// </summary>
/// <param name="Handle">目标句柄</param>
/// <param name="wParam">发送的消息</param>
public void PostMess(int Handle, string wParam)
{
IntPtr p = Marshal.StringToHGlobalAnsi(wParam);
if (Handle > 0)
PostMessage(Handle, WM_POSTMESSAGE, p, defaultlParam);
}
在form1中写入上述代码,然后这样使用
PostMess(this.Handle.toInt32(),label1.text)
然后再Form2中写入下面的代码
protected override void DefWndProc(ref Message m)
{
switch (m.Msg)
{
case WM_POSTMESSAGE:
string str = Marshal.PtrToStringAnsi(m.WParam);
label2.text=str;
break;
default:
base.DefWndProc(ref m);
break;
}
}
如果传递的时候form2没有创建,可以在form1中这样写
Form2 frm=new Form2();
frm.label2.text=label1.text;
frm.show();
#5
正解
#6
在FormLogin中:
int UserId=Convert.toInt32(TextBox1.Text.Trim());
FormMain formMain = new FormMain(UserId);
formMain.Login = this;
formMain.Show();
在formMain中:
int userId = 0;
public FormMain(int UserId)
{
InitializeComponent();
userId = UserId;
}
private FormLogin login;
public FormLogin Login
{
get { return login; }
set { login = value; }
}
int UserId=Convert.toInt32(TextBox1.Text.Trim());
FormMain formMain = new FormMain(UserId);
formMain.Login = this;
formMain.Show();
在formMain中:
int userId = 0;
public FormMain(int UserId)
{
InitializeComponent();
userId = UserId;
}
private FormLogin login;
public FormLogin Login
{
get { return login; }
set { login = value; }
}
#7
你是个sb 人家是winfrom
#8
直接在from1中设置一个变量放label2.Text 在from2中直接取from1.变量
#9
from2类中声明一个公共的变量 publis string Value;
from1中的new一个from2的对象,
from2 f2=new from2();
f2.Value=label1.text;
f2.show();
在from2加载Load事件里面绑定数据label2.text=Value;
from1中的new一个from2的对象,
from2 f2=new from2();
f2.Value=label1.text;
f2.show();
在from2加载Load事件里面绑定数据label2.text=Value;
#10
from2类中声明一个公共的变量
public string SetLable2
{
set { label2.text = value; }
}
public string SetLable2
{
set { label2.text = value; }
}
#11
构造函数, 委托。 。
#12
将变量设置成public 或者public static
最简单的就是构造函数了
最简单的就是构造函数了
string str_ = string.Empty;
public void From2(string str)
{
……
str_ = str;
}
#13
将lable设置成public
#14
#15
窗体类之间传值,普遍有三种方法,请用父子窗体的思想去理解它,第一种:父亲想要获取儿子的属性成员,只要把子窗体里的成员申明成public. 第二种:儿子想要得到父亲属性或是操作父亲方法,可以在儿子的构造函数里添加参数,在实例化儿子时把父亲句柄传入。第三种,就是利用委托事件,就可以互相操作了。具体,可以参考 李天平的 亮剑 net 实战 书中讲得很详细。。。
#16
我一般就直接把label1.text声明为public,然后在form2里实例化form1,直接调用form1对象的label1.text。楼上归纳得很好呀。。。
#17
都闪开来分!
声明一个全局变量在类里写
public static string AAA=string.emprt;
页面加载的代码里加
AAA=label1.text;
from2里面写
label2.text=from1.AAA;
声明一个全局变量在类里写
public static string AAA=string.emprt;
页面加载的代码里加
AAA=label1.text;
from2里面写
label2.text=from1.AAA;
#18
这类问题很多人问了,2楼的比较好
#19
正解,归纳的很好的说。
#20
#1
跨页传值,常用有以下几种方法,楼主可以参考一下:
一. 使用QueryString变量
QueryString是一种非常简单也是使用比较多的一种传值方式,但是它将传递的值显示在浏览器的地址栏中,如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法。
Response.Redirect( "target.aspx?param1=hello¶m2=hi ")
接收页面: string str = Request.QueryString["param1"];
string str1 = Request.QueryString["param2];
二.使用Cookie对象变量(Cookie是存放在客户端的)
设置Cookie: HttpCookie cookie_name = new HttpCookie("name");
cookie_name.Value = Label1.Text;
Reponse.AppendCookie(cookie_name);
获取Cookie:
string name= Request.Cookie["name"].Value.ToString();
三. 使用Session变量(session是存放在服务器端的)
设置Session: Session["name"] ="hello";
获取Session: string name = Session["name"].ToString();
四.使用Application 对象变量
Application对象的作用范围是整个全局,也就是说对所有用户都有效。此种方法不常使用,因为Application在一个应用程序域范围共享,所有用户可以改变及设置其值,故只应用计数器等需要全局变量的地方。
设置Application : Application["name"] = ="hello";
获取Application : string name = Application["name"].ToString();
五. PostBackUrl()方法
default.aspx页面:
Code
1 <asp:Button ID="Button1" Runat="server" Text="PostToAnotherPage" PostBackUrl="~/Default2.aspx" />
2
default2.aspx页面:
Code
1 if (PreviousPage != null)
2 {
3 TextBox textBox1 = (TextBox)PreviousPage.FindControl("TextBox1");
4 Response.write(textBox1.Text );
5 }
六.使用Server.Transfer方法
这个才可以说是面象对象开发所使用的方法,其使用Server.Transfer方法把流程从当前页面引导到另一个页面中,新的页面使用前一个页面的应答流,所以这个方法是完全面象对象的,简洁有效。下面这个代码是展示在需要很多个参数的时候,使用的方法,如果参数比较少就没必要使用这个方法了.
如果让所有的查询页面都继承一个接口,在该接口中定义一个方法,该方法的唯一作用就是让结果页面获得构建结果时所需的参数,就可实现多页面共享一个结果页面操作!
1、先定义一个类,用该类放置所有查询参数:
Code
/**//// <summary>
/// QueryParams 的摘要说明
/// </summary>
public class QueryParams
{
private string firstName;
private string lastname;
private int age;
public string Firstname
{
get { return this.firstname; }
set { this.firstname = value; }
}
public string LastName
{
get { return this.lastname; }
set { this.lastname = value; }
}
public string Age
{
get { return this.age; }
set { this.age = value; }
}
}
2、接口定义:
Code
/**//// <summary >
/// 定义查询接口。
/// </summary >
public interface IQueryParams
{
/**//// <summary >
/// 参数
/// </summary >
QueryParams Parameters { get;}
}
3、查询页面继承IQueryParams接口(QueryPage.aspx):
QueryPage.aspx
Code
<form id="form1" runat="server">
<div>
<asp:TextBox ID="txtFirstName" runat="server"></asp:TextBox>
<asp:TextBox ID="txtLastName" runat="server"></asp:TextBox>
<asp:TextBox ID="txtAge" runat="server"></asp:TextBox>
<asp:Button ID="btnEnter" runat="server" Text="Button" OnClick="btnEnter_Click" /></div>
</form>
QueryPage.aspx.cs
Code
public partial class QueryPage : System.Web.UI.Page, IQueryParams
{
private QueryParams queryParams;
public QueryParams Parameters
{
get
{
return queryParams;
}
}
public void btnEnter_Click(object sender, System.EventArgs e)
{
//赋值
queryParams = new QueryParams();
queryParams.FirstnName = this.txtFirstName.Text;
queryParams.Lastname = this.txtLastName.Text;
queryParams.Age = this.txtAge.Text;
Server.Transfer( "ResultPage.aspx ");
}
protected void Page_Load(object sender, EventArgs e)
{ }
}
4、接收页面(ResultPage.aspx):
ResultPage.aspx.cs
public partial class ResultPage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
QueryParams queryParams = new QueryParams();
IQueryParams queryInterface;
//实现该接口的页面
if (Context.Handler is IQueryParams)
{
queryInterface = (IQueryParams)Context.Handler;
queryParams = queryInterface.Parameters;
}
Response.Write("FirstName: ");
Response.Write(queryParams.FirstName);
Response.Write(" <br/ >Lastname: ");
Response.Write(queryParams.LastName);
Response.Write(" <br/ >Age: ");
Response.Write(queryParams.Age);
}
}
一. 使用QueryString变量
QueryString是一种非常简单也是使用比较多的一种传值方式,但是它将传递的值显示在浏览器的地址栏中,如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法。
Response.Redirect( "target.aspx?param1=hello¶m2=hi ")
接收页面: string str = Request.QueryString["param1"];
string str1 = Request.QueryString["param2];
二.使用Cookie对象变量(Cookie是存放在客户端的)
设置Cookie: HttpCookie cookie_name = new HttpCookie("name");
cookie_name.Value = Label1.Text;
Reponse.AppendCookie(cookie_name);
获取Cookie:
string name= Request.Cookie["name"].Value.ToString();
三. 使用Session变量(session是存放在服务器端的)
设置Session: Session["name"] ="hello";
获取Session: string name = Session["name"].ToString();
四.使用Application 对象变量
Application对象的作用范围是整个全局,也就是说对所有用户都有效。此种方法不常使用,因为Application在一个应用程序域范围共享,所有用户可以改变及设置其值,故只应用计数器等需要全局变量的地方。
设置Application : Application["name"] = ="hello";
获取Application : string name = Application["name"].ToString();
五. PostBackUrl()方法
default.aspx页面:
Code
1 <asp:Button ID="Button1" Runat="server" Text="PostToAnotherPage" PostBackUrl="~/Default2.aspx" />
2
default2.aspx页面:
Code
1 if (PreviousPage != null)
2 {
3 TextBox textBox1 = (TextBox)PreviousPage.FindControl("TextBox1");
4 Response.write(textBox1.Text );
5 }
六.使用Server.Transfer方法
这个才可以说是面象对象开发所使用的方法,其使用Server.Transfer方法把流程从当前页面引导到另一个页面中,新的页面使用前一个页面的应答流,所以这个方法是完全面象对象的,简洁有效。下面这个代码是展示在需要很多个参数的时候,使用的方法,如果参数比较少就没必要使用这个方法了.
如果让所有的查询页面都继承一个接口,在该接口中定义一个方法,该方法的唯一作用就是让结果页面获得构建结果时所需的参数,就可实现多页面共享一个结果页面操作!
1、先定义一个类,用该类放置所有查询参数:
Code
/**//// <summary>
/// QueryParams 的摘要说明
/// </summary>
public class QueryParams
{
private string firstName;
private string lastname;
private int age;
public string Firstname
{
get { return this.firstname; }
set { this.firstname = value; }
}
public string LastName
{
get { return this.lastname; }
set { this.lastname = value; }
}
public string Age
{
get { return this.age; }
set { this.age = value; }
}
}
2、接口定义:
Code
/**//// <summary >
/// 定义查询接口。
/// </summary >
public interface IQueryParams
{
/**//// <summary >
/// 参数
/// </summary >
QueryParams Parameters { get;}
}
3、查询页面继承IQueryParams接口(QueryPage.aspx):
QueryPage.aspx
Code
<form id="form1" runat="server">
<div>
<asp:TextBox ID="txtFirstName" runat="server"></asp:TextBox>
<asp:TextBox ID="txtLastName" runat="server"></asp:TextBox>
<asp:TextBox ID="txtAge" runat="server"></asp:TextBox>
<asp:Button ID="btnEnter" runat="server" Text="Button" OnClick="btnEnter_Click" /></div>
</form>
QueryPage.aspx.cs
Code
public partial class QueryPage : System.Web.UI.Page, IQueryParams
{
private QueryParams queryParams;
public QueryParams Parameters
{
get
{
return queryParams;
}
}
public void btnEnter_Click(object sender, System.EventArgs e)
{
//赋值
queryParams = new QueryParams();
queryParams.FirstnName = this.txtFirstName.Text;
queryParams.Lastname = this.txtLastName.Text;
queryParams.Age = this.txtAge.Text;
Server.Transfer( "ResultPage.aspx ");
}
protected void Page_Load(object sender, EventArgs e)
{ }
}
4、接收页面(ResultPage.aspx):
ResultPage.aspx.cs
public partial class ResultPage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
QueryParams queryParams = new QueryParams();
IQueryParams queryInterface;
//实现该接口的页面
if (Context.Handler is IQueryParams)
{
queryInterface = (IQueryParams)Context.Handler;
queryParams = queryInterface.Parameters;
}
Response.Write("FirstName: ");
Response.Write(queryParams.FirstName);
Response.Write(" <br/ >Lastname: ");
Response.Write(queryParams.LastName);
Response.Write(" <br/ >Age: ");
Response.Write(queryParams.Age);
}
}
#2
通过form2的构造函数
private string m_str;
public form2(string str)
{
m_str=str;
}
form2 frm=new form2(label1.Text);//
private string m_str;
public form2(string str)
{
m_str=str;
}
form2 frm=new form2(label1.Text);//
#3
label2.Text=m_str;//
#4
使用SendMessage或者PostMessage方法
在form1中写入上述代码,然后这样使用
PostMess(this.Handle.toInt32(),label1.text)
然后再Form2中写入下面的代码
如果传递的时候form2没有创建,可以在form1中这样写
Form2 frm=new Form2();
frm.label2.text=label1.text;
frm.show();
[DllImport("user32.dll")]
public static extern IntPtr PostMessage(int hWnd, int Msg, IntPtr wParam, int lParam);
public const int WM_USER = 0x0400;//用户自定义消息
public const int WM_POSTMESSAGE = WM_USER + 1000;//发送信息
public const int defaultlParam = 0;
/// <summary>
/// PostMessage方法发送消息
/// </summary>
/// <param name="Handle">目标句柄</param>
/// <param name="wParam">发送的消息</param>
public void PostMess(int Handle, string wParam)
{
IntPtr p = Marshal.StringToHGlobalAnsi(wParam);
if (Handle > 0)
PostMessage(Handle, WM_POSTMESSAGE, p, defaultlParam);
}
在form1中写入上述代码,然后这样使用
PostMess(this.Handle.toInt32(),label1.text)
然后再Form2中写入下面的代码
protected override void DefWndProc(ref Message m)
{
switch (m.Msg)
{
case WM_POSTMESSAGE:
string str = Marshal.PtrToStringAnsi(m.WParam);
label2.text=str;
break;
default:
base.DefWndProc(ref m);
break;
}
}
如果传递的时候form2没有创建,可以在form1中这样写
Form2 frm=new Form2();
frm.label2.text=label1.text;
frm.show();
#5
正解
#6
在FormLogin中:
int UserId=Convert.toInt32(TextBox1.Text.Trim());
FormMain formMain = new FormMain(UserId);
formMain.Login = this;
formMain.Show();
在formMain中:
int userId = 0;
public FormMain(int UserId)
{
InitializeComponent();
userId = UserId;
}
private FormLogin login;
public FormLogin Login
{
get { return login; }
set { login = value; }
}
int UserId=Convert.toInt32(TextBox1.Text.Trim());
FormMain formMain = new FormMain(UserId);
formMain.Login = this;
formMain.Show();
在formMain中:
int userId = 0;
public FormMain(int UserId)
{
InitializeComponent();
userId = UserId;
}
private FormLogin login;
public FormLogin Login
{
get { return login; }
set { login = value; }
}
#7
你是个sb 人家是winfrom
#8
直接在from1中设置一个变量放label2.Text 在from2中直接取from1.变量
#9
from2类中声明一个公共的变量 publis string Value;
from1中的new一个from2的对象,
from2 f2=new from2();
f2.Value=label1.text;
f2.show();
在from2加载Load事件里面绑定数据label2.text=Value;
from1中的new一个from2的对象,
from2 f2=new from2();
f2.Value=label1.text;
f2.show();
在from2加载Load事件里面绑定数据label2.text=Value;
#10
from2类中声明一个公共的变量
public string SetLable2
{
set { label2.text = value; }
}
public string SetLable2
{
set { label2.text = value; }
}
#11
构造函数, 委托。 。
#12
将变量设置成public 或者public static
最简单的就是构造函数了
最简单的就是构造函数了
string str_ = string.Empty;
public void From2(string str)
{
……
str_ = str;
}
#13
将lable设置成public
#14
#15
窗体类之间传值,普遍有三种方法,请用父子窗体的思想去理解它,第一种:父亲想要获取儿子的属性成员,只要把子窗体里的成员申明成public. 第二种:儿子想要得到父亲属性或是操作父亲方法,可以在儿子的构造函数里添加参数,在实例化儿子时把父亲句柄传入。第三种,就是利用委托事件,就可以互相操作了。具体,可以参考 李天平的 亮剑 net 实战 书中讲得很详细。。。
#16
我一般就直接把label1.text声明为public,然后在form2里实例化form1,直接调用form1对象的label1.text。楼上归纳得很好呀。。。
#17
都闪开来分!
声明一个全局变量在类里写
public static string AAA=string.emprt;
页面加载的代码里加
AAA=label1.text;
from2里面写
label2.text=from1.AAA;
声明一个全局变量在类里写
public static string AAA=string.emprt;
页面加载的代码里加
AAA=label1.text;
from2里面写
label2.text=from1.AAA;
#18
这类问题很多人问了,2楼的比较好
#19
正解,归纳的很好的说。