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