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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.07.2010, 15:08   #1
iHikita
Пользователь
 
Регистрация: 14.03.2010
Сообщений: 38
По умолчанию Запутался с формами

Есть главная форма, в ней вызывает вторая форма вот так:

Код:
// Форма 1
            CaptchaForm CForm = new CaptchaForm(this.captcha_code);
            CForm.ShowDialog();
// Форма 2
public CaptchaForm(string code)
        {
            InitializeComponent();
            this.code = code;
            pictureBox1.ImageLocation += code;
        }
string code;
А теперь мне нужно из второй формы передать строку в глобальную переменную первой формы и закрыть вторую форму. Как это сделать я уже совсем запарился. Подскажите пожалуйста.
iHikita вне форума Ответить с цитированием
Старый 30.07.2010, 15:21   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

В первой форме обьяви
Код:
public static int i;
Можно без static это я так...
А во второй:
Код:
            Form1.i = 35;
            Close();
Уловил message?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.07.2010, 15:23   #3
Casper-SC
Форумчанин
 
Регистрация: 04.07.2007
Сообщений: 549
По умолчанию

Код:
// Форма 1
            CaptchaForm CForm = new CaptchaForm(this.captcha_code, this);
            CForm.ShowDialog();
// Форма 2
public CaptchaForm(string code, IWin32Window owner)
        {
            InitializeComponent();
            this.Owner = owner;
            this.code = code;
            pictureBox1.ImageLocation += code;
        }
string code;
Всё ссылка на главную форму в this.Owner;

Далее обращаемся к главной форме так:
Код:
            try
            {
                if (this.Owner is FormMain) 
                {
                    (this.Owner as FormMain).btnTestFormMsg.Enabled = true;
                }
                else if (this.Owner is FormSetting) 
                {
                    (this.Owner as FormSetting).timerPositionMusic.Enabled = false;
                    (this.Owner as FormSetting).timerVolumeChange.Enabled = false;
                    if ((this.Owner as FormSetting).WMP.playState == WMPLib.WMPPlayState.wmppsPlaying)
                    {
                        (this.Owner as FormSetting).WMP.controls.stop();
                    (this._Owner as FormSetting).timerSoundDown.Start();
                    }
                }
            }
            catch (Exception exc)
            {
                MessageBox.Show("Ошибка в методе закрытия сообщения в стиле стикер\n" + exc.Message);
            }
Это слегка переделанный пример из моего кода, думаю разберёшься. А вот с закрытие главного окна думаю в WinForms не стоит париться. В WPF можно такое сделать вообще легко, в WinForms не знаю не пробовал. Можно сделать главное окно скрытым, а остальные 2 будут друг друга закрывать.


Можно так:
Код:
            if (this._Owner is FormSetting) 
            {
                FormSetting frmSet = (this._Owner as FormSetting);
                frmSet.timerPositionMusic.Enabled = false;
            }

Последний раз редактировалось Casper-SC; 30.07.2010 в 15:27.
Casper-SC вне форума Ответить с цитированием
Старый 30.07.2010, 15:41   #4
iHikita
Пользователь
 
Регистрация: 14.03.2010
Сообщений: 38
По умолчанию

Огромное спасибо, однако немного изменил:
Код:
public CaptchaForm(string code, Form owner)
На IWin32Window ругался.
iHikita вне форума Ответить с цитированием
Старый 30.07.2010, 15:49   #5
Casper-SC
Форумчанин
 
Регистрация: 04.07.2007
Сообщений: 549
По умолчанию

Странно. Не понимаю причины. На что там было ругаться.
Может дело в версии фрэймворка? То есть проект под ранний фрэймворк может пишется? Хотя это просто предположение не на чём не основанное. Так как не знаю есть ли в ранних фрэймворках этот интерфейс IWin32Window.
Casper-SC вне форума Ответить с цитированием
Старый 30.07.2010, 15:55   #6
iHikita
Пользователь
 
Регистрация: 14.03.2010
Сообщений: 38
По умолчанию

Пишу в MS Visual C# 2008;
Сама Error'ка:
Error 1 Cannot implicitly convert type 'System.Windows.Forms.IWin32Window' to 'System.Windows.Forms.Form'.
iHikita вне форума Ответить с цитированием
Старый 30.07.2010, 16:08   #7
Casper-SC
Форумчанин
 
Регистрация: 04.07.2007
Сообщений: 549
По умолчанию

Дык просто скорее всего что-то ты не правильно делал. Так то всё будет работать 100%. Ну смотри сам.
Casper-SC вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
видимость данных. запутался navi2 Общие вопросы C/C++ 4 05.04.2010 21:34
Помогите пожалуйста, запутался sportab Microsoft Office Excel 6 08.12.2009 18:58
Запутался с CopyRect Alex Cones Общие вопросы Delphi 2 01.12.2009 20:55
запутался! mistertvister Помощь студентам 3 28.10.2009 14:52
запутался в процедурах world12_tk Помощь студентам 6 03.03.2009 18:57