C#-如何将字符串从自定义消息框传输到表单



我创建了一个自定义消息框,其中包含一个用于输入的文本框,该文本框在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;
        }
    }
}

最新更新