C#-如何将字符串从自定义消息框传输到表单
本文关键字:传输 表单 自定义消息 字符串 C#- | 更新日期: 2023-09-27 18:21:39
我创建了一个自定义消息框,其中包含一个用于输入的文本框,该文本框在form1中的特定条件下显示。如果单击提交btn,我希望form1保持文本框的值。我没有得到想要的结果。
这与此类似,但我不希望在消息框中进行处理,因为该过程需要太多变量,我必须将这些变量转移到messsagebox。
形式条件
}
else //NOT ALL APPROVE
{
string BtnClicked = DenyEmpRequest.ShowBox(AllDenied, EmpRequestID);
if (BtnClicked == "1") //SUBMIT BTN WAS CLICKED
{
DenyEmpRequest emp = new DenyEmpRequest();
string reason = emp.Reason_Txt.Text;
}
我知道这是因为我正在创建一个新的表单实例,当我说"DenyEmpRequest emp=new DenyEmpRequest();"时,我在消息框中使用了这个表单。我不知道有什么其他方法可以访问消息框中的文本框。
消息框代码
public static string ShowBox(string DenyEmp, string RequestID)
{
newMessageBox = new DenyEmpRequest();
newMessageBox.EmpToDeny_lbl.Text = DenyEmp;
EmpRequestID = RequestID;
newMessageBox.ShowDialog();
return Button_id;
}
private void SubmitBtn_Click(object sender, EventArgs e)
{
if (Reason_Txt.Text == string.Empty)
{
NoReason_Lbl.Visible = true;
}
else
{
Button_id = "1";
newMessageBox.Dispose();
}
看起来您过于复杂了。如果您只是试图从自定义MessageBox中检索字符串,只需制作一个带有"确定/取消"按钮和文本框的表单即可。制作一个公共字符串属性,该属性环绕文本框的"text"属性的值。并将表单的DialogResult设置为DialogResult.OK(如果单击"确定"按钮),DialogResult.Cancel(如果单击取消按钮)。
然后你可以调用这个表单,代码如下:
using (CustomMessageBox myMessageBox = new CustomMessageBox())
{
myMessageBox.Text = "Initial text"; // optionally set the initial value of the text box
if (myMessageBox.ShowDialog(this) == DialogResult.OK)
{
someVariable = myMessageBox.Text;
}
}
这是您应该使用的格式。
编辑:参考你的评论,如果你有一个带有文本框的表格,只需像这样写下属性:
public class CustomMessageBox : Form
{
public string Text
{
get
{
return textBox.Text;
}
set
{
textBox.Text = value;
}
}
}