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

时间:2012-01-29 05:45:42

标签: c# winforms

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

1 个答案:

答案 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;
        }
    }
}