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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 01.04.2008, 14:17   #1
Gauss
Форумчанин
 
Аватар для Gauss
 
Регистрация: 26.11.2007
Сообщений: 235
По умолчанию В дельфи это ShowModal а в Си-шарпе?

Всем привет, помогите мне новичку в си-шарпе, в чём у меня тут ошибка скажите плиз :
Код:
 private void button1_Click(object sender, EventArgs e)
        {
            if (textBox1.Text == "mmm" && textBox2.Text == "123")
            {
               Congratulations.ActiveForm.ShowDialog; //тут ошибку дает
            }
         }
Хочу сделать на шарпе код, вот это на дельфи :
Код:
Begin
           if (edit1.Text='mmm') and (edit2.Text='123') then
                 Form2.ShowModal;
          end
Яснее выражай мысли. Непонятно что хочешь? Либо форму модально отобразить? Либо диалог показать?

Последний раз редактировалось merax; 01.04.2008 в 18:26.
Gauss вне форума
Старый 01.04.2008, 16:48   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Вот Дельфи - знаю, а в Си - практически ничего.
Но это не помешало мне составить запрос для поисковика (а просто использовал заданный вопрос) и получить ответ для вас:

Код:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Form2->ShowModal();
}
Это у вас привычка такая - "а пусть другие за меня делают" ?

Шарписты с другого форума дали другой ответ:
Код:
form2.ShowDialog();
А на винграде подтвердили - "это окно типа диалог" и правильно будет:
Код:
MyForm.ShowModal()
Цитата:
Огорчу тебя Михалыч. Это код на C++ Bilder который от Delphi не далеко ушел. А С# 100% другое.
И RSDN (вот ужас!) тоже неправ, оказывается:
Цитата:
Как правильно создать модальное окно в C# ?
От: Di_wind

Здравствуйте, Вы писали:
Если ты создал форму в режими дизайна и назвал её, к примеру, AboutForm то в главной форме пишешь так:
Form MyForm = new AboutForm();
MyForm.Show() или MyForm.ShowModal()
Кому верить? Куда бежать? Кому сдаваться?
И, главное, непонятно - от чьих слов нужно огорчаться???

Последний раз редактировалось mihali4; 01.04.2008 в 18:27.
mihali4 вне форума
Старый 01.04.2008, 18:00   #3
merax
Форумчанин
 
Регистрация: 27.12.2006
Сообщений: 955
По умолчанию

Огорчу тебя Михалыч. Это код на C++ Builder который от Delphi не далеко ушел. А С# 100% другое.

to TC.

Короче у главной формы свойство IsMDIcontainer ставишь true. В Solution Explorer -> Add -> добывляешь New Item -> Windows Form
и по какому либо событию (у мну буттон клик) пишешь такое:

Код:
private void button1_Click(object sender, EventArgs e)
        {
            Form2 fr = new Form2();
            fr.MdiParent = this;
            fr.Show();
        }
P.S. Что то с легонца те "шарписты" подтупливают. Либо я задание ничерта не понял.

Последний раз редактировалось merax; 01.04.2008 в 18:24.
merax вне форума
Старый 02.04.2008, 11:29   #4
Gauss
Форумчанин
 
Аватар для Gauss
 
Регистрация: 26.11.2007
Сообщений: 235
По умолчанию

Цитата:
Яснее выражай мысли. Непонятно что хочешь? Либо форму модально отобразить? Либо диалог показать?
Извиняюсь зя неясность мыслей моих) Буду чрезвычайно ясен:
У меня есть форма на ней едит1 и едит2 и буттон и есть вторая форма(называется Congratulations) Я хочу, чтобы если значения верно введены в едитах то после нажатия буттона отобразилапсь вторая моя форма (модально отобразить форму эту вторую).
На дельфи это легко делаеться а в шарпе я новичек, и у меня выходит ошибка когда я пишу на онклик буттона вот этот код

Код:
private void button1_Click(object sender, EventArgs e)
        {
            if (textBox1.Text == "gauss" && textBox2.Text == "123")
            {
              Congratulations.ActiveForm.ShowDialog();
            }
            else
            {
                MessageBox.Show("Error in login or password");
            }
            
        }
а ошибка такая(компиляция нормально происходит, а вот после прогона и после ввода значения в едиты и после нажатия на буттон выходит ошибка):

Unhandled exception has occured in your application. If you click Continue....
...и т.д. и
Form that is already visible cannot be displayed as a modal dialog box.
Set the form's visible property to false before calling showDialog.

Последний раз редактировалось Gauss; 02.04.2008 в 11:48.
Gauss вне форума
Старый 02.04.2008, 12:04   #5
Gauss
Форумчанин
 
Аватар для Gauss
 
Регистрация: 26.11.2007
Сообщений: 235
По умолчанию

сделал как вы сказали
Код:
private void button1_Click(object sender, EventArgs e)   
        {  
            if (textBox1.Text == "gauss" && textBox2.Text == "123")  
            {  
                Form2 fr = new Form2();  
                fr.MdiParent = this;  
                fr.Show();  
            }   
            else   
            {  
                MessageBox.Show("Какой то еррор");  
            }   
        }
Компиляция опять идёт, а вот после нажатия на буттон опять ошибка выходит, теперь такая ошибка:

Unhandled exception has occured in your application. If you click Continue....
...и т.д. и
Form that was specified to be the MdiParent for this form is not an MdiContainer.
Parameter name: value.
Gauss вне форума
Старый 02.04.2008, 12:08   #6
merax
Форумчанин
 
Регистрация: 27.12.2006
Сообщений: 955
По умолчанию

Ты в настройках главной формы свойство IsCountainer поставь в true
merax вне форума
Старый 02.04.2008, 12:20   #7
Gauss
Форумчанин
 
Аватар для Gauss
 
Регистрация: 26.11.2007
Сообщений: 235
По умолчанию

Цитата:
Ты в настройках главной формы свойство IsCountainer поставь в true
Спасибо merax, поставил, но у меня какой мутант получился)))) Даже незнаю как выразится, после того как я это true сделал, у меня
1) цвет главной формы сменился, стал как цвет фона где код пишу (серым)
2)после нажатия на кнопку, вторая форма появляется, но стоит она внутри главной формы и главное стоит она за всеми объектами (за едитами и буттоном) и перемещать ее можно только внутри этой главной формы.
Пожалуйста объясните мне, как полностью незнающему шарп человеку, это так должно быть? или я намудрил что то ?
Gauss вне форума
Старый 02.04.2008, 14:28   #8
merax
Форумчанин
 
Регистрация: 27.12.2006
Сообщений: 955
По умолчанию

В простонародье это называется многодокументное приложение. Понял, что тебе ето не надо. Убери истину с IsCountainer и сделай вот так

Код:
private void button1_Click(object sender, EventArgs e)      
        {    
            if (textBox1.Text == "gauss" && textBox2.Text == "123")    
            {    
                Form2 fr = new Form2();    
                fr.Show();    
            }      
            else      
            {    
                MessageBox.Show("Какой то еррор");    
            }      
        }

А вообще если ты желаешь что бы фокус ввода не переходил на главную форму до закрытия Form2 (кстати это и есть модальность), то в моем коде замени

Код:
f.Show();
на

Код:
f.ShowDialog();


to mihali4:

Если ты самый умный, то установи себе Visual C# и поищи там ShowModal. А если ты не отличаешь синтаксиса С# от синтаксиса С++ Builder, то на других не надо наезжать. Ок?

Последний раз редактировалось merax; 02.04.2008 в 14:54.
merax вне форума
Старый 02.04.2008, 15:35   #9
Gauss
Форумчанин
 
Аватар для Gauss
 
Регистрация: 26.11.2007
Сообщений: 235
По умолчанию

merax Большое спасибо! Получилось, да я имел ввиду именно модальность, хотя и просто вызов второй формы тоже незнал, теперь узнал.
Мне говорили что надо шоудиалог делать я и делал и не получалось, оказывается загвоздка тут была
Код:
 Form2 fr = new Form2();
Всем спасибо, можно закрыть тему.
Gauss вне форума
Закрытая тема


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не запускается дельфи L_M Общие вопросы Delphi 3 21.04.2013 07:17
вызов из dll не ShowModal. Roof Общие вопросы Delphi 7 25.07.2008 15:22
Дельфи DBGrid! nur БД в Delphi 8 18.07.2008 11:45
AlphaBlend + ShowModal Cardagant Общие вопросы Delphi 2 11.06.2008 15:42
двумерка в дельфи Puffy Помощь студентам 4 13.05.2008 01:04