我创建了一个自定义消息框,其中包含一个输入文本框,该文本框出现在form1中的某个条件下。如果单击提交btn,我希望form1保存文本框的值。我没有得到理想的结果。
这类似于this但是我不希望在消息框中进行处理,因为该过程需要很多变量才能转移到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();
}
答案 0 :(得分:2)
看起来你过于复杂了。如果您只是尝试从自定义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;
}
}
}