C# 将值从一个窗体传递到另一个窗体中的文本框
我知道这个问题已经被问了好几次了,但是没有一个解决方案对我有效。我只想将一个值从一个表单传递到另一个表单中的文本框。C# 将值从一个窗体传递到另一个窗体中的文本框,c#,winforms,C#,Winforms,我知道这个问题已经被问了好几次了,但是没有一个解决方案对我有效。我只想将一个值从一个表单传递到另一个表单中的文本框。 在第一个表单中,我有一个数据网格,双击它可以从datagrid列获得一个值 public partial class AvailableRooms : Form { private void DCRoom(object sender, DataGridViewCellMouseEventArgs e) { var roomnum = dgRooms.Row
在第一个表单中,我有一个数据网格,双击它可以从datagrid列获得一个值
public partial class AvailableRooms : Form
{
private void DCRoom(object sender, DataGridViewCellMouseEventArgs e)
{
var roomnum = dgRooms.Rows[e.RowIndex].Cells["iRoomNum"].Value.ToString();
RoomBooking rb = new RoomBooking();//The second form
rb.roomnumber = roomnum;
rb.Show();
}
}
在第二个表单中,我设置了文本框的属性
public partial class RoomBooking : Form
{
public RoomBooking()
{
StartPosition = FormStartPosition.CenterScreen;
InitializeComponent();
}
public string roomnumber
{
get { return txtRoomNum.Text; }
set {txtRoomNum.Text = value;}
}
}
提前感谢您的帮助?您必须找到该控件才能对其进行编辑,因为它不属于该类
private void DCRoom(object sender, DataGridViewCellMouseEventArgs e)
{
//new value
var roomnum = dgRooms.Rows[e.RowIndex].Cells["iRoomNum"].Value.ToString();
//The second form
RoomBooking rb = new RoomBooking(this);
//The textbox
TextBox roomnumber = (TextBox)rb.Controls.Find("roomnumber", true)[0];
//set the value of the textbox
roomnumber.Text = roomnum;
//show second form
rb.Show();
}
我会这样定义
RoomBooking
类:
公共部分课程预订:表格
{
public RoomBooking()//WinForms Designer需要一个公共的无参数构造函数
{
初始化组件();
StartPosition=FormStartPosition.CenterScreen;
}
公共RoomBooking(字符串roomNumber):this()//构造函数链接
{
RoomNumber=RoomNumber;
Text=RoomNumber;
}
公共字符串RoomNumber{get;set;}
}
然后:
公共部分类可用eRoom:表单
{
私有void DCRoom(对象发送器,DataGridViewCellMouseEventArgs e)
{
var roomNumber=dgRooms.Rows[e.RowIndex].Cells[“iRoomNum”].Value.ToString();
var roomBooking=新的roomBooking(roomNumber);
预订房间;
}
}
希望这能有所帮助。您遇到的问题或看到的错误到底是什么?您的代码似乎工作正常,实际问题是什么?当“RoomBooking”窗体弹出时,txtRoomNum文本框为空。即使为其赋值“rb.roomnumber=roomnum;”,也没有向其传递任何值@MichaelGoyote您是否检查了
roomnum
的值?@MichaelGoyote很明显,旧的.exe
是运行的,而不是当前的版本,这种问题有时会发生,Rebuild
是我们可以进行排序的第一件必须尝试的事情。这看起来确实是一种更干净的方法。我会试着让你知道的。在我目前正在进行的项目中,我已经成功地使用了这种模式。另外-如果只需要设置一次txtRoomNum
,并计划引用该属性而不是RoomNumber
属性,则可以从类定义中删除该属性并直接设置txtRoomNum.Text=RoomNumber
。