как узнать, какая кнопка нажата на форме в приложении c # winform - PullRequest
0 голосов
/ 30 октября 2018

У меня есть форма winform, которая спрашивает пользователя, сохранять ли изменения или нет, форма содержит две кнопки ДА или НЕТ. Теперь эта форма появляется, когда пользователь заполняет какие-либо данные в другой форме, оставляя несохраненные изменения, я спрашиваю пользователю ли сохранить несохраненные данные или нет. Теперь на основе моего диалогового окна формы messagesBox выдается результат: если пользователь вводит YES, я сохраняю изменения, если он вводит NO, несохраненные изменения отменяются, и если он нажимает кнопку [X] формы messageBox, то ничего не делается.

messageBox Form

Что я пробовал до сих пор:

 public partial class Form_MessageBox : Form
    {

    public static bool checkedLiveviewAlso=false;       
    private static Form_MessageBox msgBox;
    private static readonly SoundPlayer obj_SoundPlayer = new SoundPlayer();
    private DialogResult dialogResult;
    private string buttonName = "Cancel";
    private bool Flag = false;

    public static Form_MessageBox MSGBOX
    {
        get { return msgBox; }
    }
    public string ButtonName
    {
        get { return buttonName;}   set{ buttonName = value;}
    }

    private static  Form_MessageBox GetFormMessageBox()
    {
        if (msgBox == null)
        {
            msgBox = new Form_MessageBox();

        }
        msgBox.vmS_ApplySameLiveview.Visible = false;
        return msgBox;
    }


    //Yes button event handler
    private void bt_Yes_Click(object sender, EventArgs e)
    {
        ButtonName = "Yes";
        Flag = true;
        msgBox.dialogResult = DialogResult.Yes;
        msgBox.Focus();
        msgBox.Close();
    }

    //No button click event handler.
    private void bt_No_Click(object sender, EventArgs e)
    {
        ButtonName = "No";
        Flag = true;
        msgBox.dialogResult = DialogResult.No;
        msgBox.Focus();
        msgBox.Close();
    }

     //Form Closing event handler
     private void Form_MessageBox_FormClosing(object sender, FormClosingEventArgs e)
    {
        if(sender is Form_MessageBox)
        {
            ButtonName = "Cancel";
            msgBox.DialogResult = DialogResult.Cancel;
            //msgBox.Close();
        }
        //msgBox.Visible = true;
        //e.Cancel = true;
    }

   //Static show method of messageBox form which is called my another form.
   public static DialogResult Show(string message, string titleText, MessageBoxButtons msgBoxButtons, MessageBoxIcon icon)
    {
        msgBox = GetFormMessageBox();// new Form_MessageBox();
        try
        {


            Form_Loading.CloseForm();
           // string Message = locRM.GetString(message);

                msgBox.set_message_property(message.Trim(), titleText, msgBoxButtons, icon);

            msgBox.ShowDialog();

            return msgBox.dialogResult;
        }

        finally
        {
            //msgBox.Dispose();
        }
    }

Основная проблема заключается в нажатии кнопки [X] в форме сообщения.

Мой вопрос прост: как я могу получить названия кнопок (т. Е. Какая кнопка нажата в форме), чтобы можно было использовать ее результат диалога в моей основной форме. Thankyou!

1 Ответ

0 голосов
/ 30 октября 2018

Вы можете просто создать переменную bool, скажем, выбор, в своем классе Form_MessageBox и в обработчиках событий нажатия кнопок «да» и «нет», установить значение «истина», когда пользователь нажимает «да», и «ложь», когда пользователь нажимает «нет». И в вашей основной форме вы можете просто сделать так:

if(msgBox.choice)
{ 
    //perform operation for yes here
}
else
{ 
    //Perform operations for no here
}
...