Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.03.2010, 02:05   #1
Rid
Пользователь
 
Регистрация: 02.12.2008
Сообщений: 35
По умолчанию Проверка на закрытие окна, в C#

Привет всем,столкнулся с такой проблеммой,ни как решить не могу,мне нужно проверить по нажатию на кнопку закрыть,он мне должен отобразить диалог,где уже я выберу закрыть мне или нет!!!У меня он всю форму закрывает!!
вот код:
Код:
this.FormClosing += new FormClosingEventHandler(Form1_FormClosing);

 void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
 DialogResult rec = new DialogResult();
                rec = MessageBox.Show("Вы хотите завершить тестирование?", "Сдать тест?", MessageBoxButtons.YesNo);
            if (rec.ToString() == "Yes")
            {
                ShowResult();
                mode = 2;
            }
            else
            {
                mode = 1;
            }
}
Rid вне форума Ответить с цитированием
Старый 19.03.2010, 03:06   #2
Rid
Пользователь
 
Регистрация: 02.12.2008
Сообщений: 35
По умолчанию

гугол рулит
Код:
this.FormClosing += new FormClosingEventHandler(Form1_FormClosing);

 void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
 DialogResult rec = new DialogResult();
                rec = MessageBox.Show("Вы хотите завершить тестирование?", "Сдать тест?", MessageBoxButtons.YesNo);
            if (rec.ToString() == "Yes")
            {
                ShowResult();
                mode = 2;
            }
            else
            {
                mode = 1;
            }
e.Cansel = true; -тогда форма не закроется
}
Надеюсь кому нибудь поможет=)
Rid вне форума Ответить с цитированием
Старый 23.03.2010, 15:33   #3
Arnezami
Форумчанин
 
Регистрация: 04.10.2009
Сообщений: 147
По умолчанию

Цитата:
Сообщение от Rid Посмотреть сообщение
гугол рулит
Код:
this.FormClosing += new FormClosingEventHandler(Form1_FormClosing);

 void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
 DialogResult rec = new DialogResult();
                rec = MessageBox.Show("Вы хотите завершить тестирование?", "Сдать тест?", MessageBoxButtons.YesNo);
            if (rec.ToString() == "Yes")
            {
                ShowResult();
                mode = 2;
            }
            else
            {
                mode = 1;
            }
e.Cansel = true; -тогда форма не закроется
}
Надеюсь кому нибудь поможет=)
Ух... улыбнуло... га...нокод)) Ну ничего, всё будет хорошо с практикой!

Вот более читабельный и правильный код:

Код:

        if(MessageBox.Show("Вы хотите завершить тестирование?", "Сдать тест?", MessageBoxButtons.YesNo) ==
            DialogResult.Yes))
        {
            ShowResult();
            mode = 2;
        }
        mode = 1;
        e.Canсel = true;
Вот это :
Код:
if(rec.ToString() == "Yes")
- это сверхга...нокод))))), где то встречал и такое:

Код:
bool vasya = true;

if(vasya.ToString() == "true")
{
  ///
}
Ув. Форумчане! Если мои советы были Вам полезны, не забывайте благодарить в виде повышение рейтинга!!!
http://vkontakte.ru/id6715558

Последний раз редактировалось Arnezami; 23.03.2010 в 15:37.
Arnezami вне форума Ответить с цитированием
Старый 23.03.2010, 16:26   #4
TaTT DoGG
Форумчанин
 
Аватар для TaTT DoGG
 
Регистрация: 25.04.2008
Сообщений: 476
По умолчанию

вася улыбнул )

более читабельный наверное будет так:
Код:
DialogResult dr = MessageBox.Show("Вы хотите завершить тестирование?", "Сдать тест?", MessageBoxButtons.YesNo);
if(dr == DialogResult.Yes))
        {
            ShowResult();
            mode = 2;
        }
        mode = 1;
        e.Canсel = true;
Life if about choices
Make the right choice
TaTT DoGG вне форума Ответить с цитированием
Старый 23.03.2010, 18:23   #5
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

p.s. для чисто поржать (да не накажет меня всевидящий )

Код:
if(dr == DialogResult.Yes))
        {
            ShowResult();
            mode = 2;
        }
        mode = 1;
Смысл строки mode = 2 ? ведь все равно mode будет 1, Оптимизаторы

Edit:
Для большей "читабельности" вводите var вместо типа переменных. К примеру
Код:
DialogResult dr; // >>>>
var dr = new DialogResult....
BOBAH13 вне форума Ответить с цитированием
Старый 23.03.2010, 20:22   #6
Casper-SC
Форумчанин
 
Регистрация: 04.07.2007
Сообщений: 549
По умолчанию

Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication8
{
    /// <summary>
    /// Перечисление используется для указания чего-то, сам придумай
    /// </summary>
    enum Mode : byte
    {
        /// <summary>
        /// Один
        /// </summary>
        Odin, 

        /// <summary>
        /// Два
        /// </summary>
        Dva, 
    }

    public partial class Form1 : Form
    {
        Mode mode;

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {

        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (MessageBox.Show("Вы хотите завершить тестирование?", "Сдать тест?", MessageBoxButtons.YesNo)
                == DialogResult.Yes)
            {

                ShowResult(); //Видимо это твой какой-то метод, тут сказать ничего не могу
                mode = Mode.Dva;
            }
            else
            {
                mode = Mode.Odin;
                e.Cancel = true;
            }
        }
    }
}
Про mode один и два это я образно, но так более удобно и понятно всё, если заменить на что нибудь адекватное и в тему.

Последний раз редактировалось Casper-SC; 23.03.2010 в 20:35.
Casper-SC вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Закрытие окна по нажатию на Escape Arkuz Общие вопросы Delphi 12 09.02.2011 10:03
Отменить закрытие окна ds.Dante Общие вопросы .NET 3 01.10.2009 17:30
Запрет на закрытие окна Bayazet Общие вопросы Delphi 4 25.12.2008 11:29
Как сделать чтобы дочерние окна в MDI-приложениях были вне главного окна??? dimonchuk Общие вопросы Delphi 1 11.08.2007 12:13
проверка существования окна Shade Win Api 3 22.07.2007 17:56