C # - Как перенести строку из настраиваемого окна сообщения в форму - PullRequest
0 голосов
/ 29 января 2012

Я создал пользовательское окно сообщения с текстовым полем для ввода, которое появляется при определенных условиях в форме1.Я хочу, чтобы form1 содержал значение текстового поля, если нажата кнопка отправки btn.Я не получаю желаемого результата.

Это похоже на это , однако я не хочу, чтобы обработка происходила в окне сообщения, потому что для процесса требуется так много переменных, что мне пришлось бы перенести его в блок сообщений.

Условие формы

}
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 Ответ

2 голосов
/ 29 января 2012

Похоже, вы это слишком усложняете.Если вы просто пытаетесь получить строку из пользовательского MessageBox, просто создайте форму с кнопкой OK / Cancel и текстовым полем.Создайте общедоступное строковое свойство, которое оборачивается вокруг значения свойства «Текст» текстового поля.И установите для формы значение DialogResult, равное DialogResult.OK, если нажата кнопка 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;
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...