Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > .NET > Общие вопросы .NET
Регистрация

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 16.01.2010, 21:27   #1
cherw9!40k
Форумчанин
 
Аватар для cherw9!40k
 
Регистрация: 20.11.2009
Сообщений: 61
Репутация: 20
Вопрос (C#) MS Visual Studio 2008. Как работать с объектами разных окон?

При запуске программы появляющееся окно вызывает другое окно. Во втором окне вызывается метод, который работает с объектом первого окна. Как это сделать? Вот, что пытался изобразить я:

(основное окно, которое вызывает второе окно)

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

namespace WindowsFormsApplication1
{
        
    public partial class ОсновноеОкно : Form
    {
        public ОсновноеОкно()
        {
            InitializeComponent();
            ОкноИдентификации ОИ = new ОкноИдентификации();
            ОИ.ShowDialog();
            
        }
        
    }
}
(второе окно)

Код:
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 WindowsFormsApplication1
{
    public partial class ОкноИдентификации : Form
    {
        public ОкноИдентификации()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            ОсновноеОкно ОО = new ОсновноеОкно();
            ОО.Text = "Пол";
        }
    }
}
Все нормально компилируется, только никаких эффектов не замечено.
cherw9!40k вне форума   Ответить с цитированием
Старый 17.01.2010, 00:50   #2
dampirik
Участник клуба
 
Регистрация: 02.07.2009
Адрес: Москва
Сообщений: 722
Репутация: 125

icq: 301040873
По умолчанию

А что именно хотите сделать? Глобальные переменые во многих частях решают проблему...
dampirik вне форума   Ответить с цитированием
Старый 17.01.2010, 01:08   #3
cherw9!40k
Форумчанин
 
Аватар для cherw9!40k
 
Регистрация: 20.11.2009
Сообщений: 61
Репутация: 20
По умолчанию

Из окна ОкноИдентификации хочу изменить надпись в окне ОсновноеОкно.

Код:
ОсновноеОкно ОО = new ОсновноеОкно();
            ОО.Text = "Пол";
Если сделать

Код:
ОсновноеОкно ОО = new ОсновноеОкно();
            ОО.Text = "Пол";
            ОО.ShowDialog();
то появится окно с надписью "Пол". При этом будет еще одно такое же окно с надписью Form1 (то есть два объекта одного класса)
cherw9!40k вне форума   Ответить с цитированием
Старый 17.01.2010, 01:38   #4
dampirik
Участник клуба
 
Регистрация: 02.07.2009
Адрес: Москва
Сообщений: 722
Репутация: 125

icq: 301040873
По умолчанию

Компьютера жалко под рукой нету с визуалом))
а если создать глобальную переменную типа стринг Text
в галвной форме у тебя будет
ОО.Text = Text;
а в дочерней
изменить этот Text

Плюс можно задать дочерней форме свойства и обьявленные переменные главной формы те сделать дочернию главной форой и тогда ты можешь обращаться из дочерней формы к главной...)
dampirik вне форума   Ответить с цитированием
Старый 17.01.2010, 02:23   #5
cherw9!40k
Форумчанин
 
Аватар для cherw9!40k
 
Регистрация: 20.11.2009
Сообщений: 61
Репутация: 20
По умолчанию

Цитата:
Сообщение от dampirik Посмотреть сообщение
в галвной форме у тебя будет
ОО.Text = Text;
а в дочерней
изменить этот Text
Код:
namespace WindowsFormsApplication1
{
    public partial class ОкноИдентификации : Form
    {
        public ОкноИдентификации()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            ОсновноеОкно ОО = new ОсновноеОкно();
            Глобал.НадписьОкна = "Пол";
        }
    }
}
Код:
namespace WindowsFormsApplication1
{
    static class Глобал
    {
        public static String НадписьОкна;
    }
    public partial class ОсновноеОкно : Form
    {
        public ОсновноеОкно()
        {
            InitializeComponent();
            ОкноИдентификации ОИ = new ОкноИдентификации();
            ОИ.ShowDialog();
        }       
    }
}

Глобальную переменную создал, в дочерней форме изменил. Куда сувать (а главное как) ОО.Text?
cherw9!40k вне форума   Ответить с цитированием
Старый 17.01.2010, 03:37   #6
Aexx
Программист тьмы
Форумчанин
 
Аватар для Aexx
 
Регистрация: 02.09.2009
Адрес: Там, откуда не возвращаются
Сообщений: 227
Репутация: 55

icq: 433999300
skype: llaexx
По умолчанию

Если вам надо получить доступ из дочерней формы к переменным главной, можете сделать так:
Главная форма:
Код:
Form2 subForm = new Form2();
subForm.Owner = this;
subForm.ShowDialog();
Дочерняя форма:
Код:
Form1 mainForm = (Form1)this.Owner;
Т.е. вы создаете новый объект формы 2 (дочерней), и делаете главную форму ее хозяином. Теперь вы можете получить доступ к любым глобальным переменным (и методам) главной формы через mainForm.Имя_переменной. Как то так
Aexx вне форума   Ответить с цитированием
Старый 17.01.2010, 03:44   #7
cherw9!40k
Форумчанин
 
Аватар для cherw9!40k
 
Регистрация: 20.11.2009
Сообщений: 61
Репутация: 20
По умолчанию

Получилось! Пасиба!

Пы.Сы. Что такое Овнер?
cherw9!40k вне форума   Ответить с цитированием
Старый 17.01.2010, 03:49   #8
Aexx
Программист тьмы
Форумчанин
 
Аватар для Aexx
 
Регистрация: 02.09.2009
Адрес: Там, откуда не возвращаются
Сообщений: 227
Репутация: 55

icq: 433999300
skype: llaexx
По умолчанию

Это свойство, задающее владельца элемента (Form) и дающее доступ к свойствам и методам этого самого владельца.
Цитата:
Получилось! Пасиба!
Сам не так давно полдня бился над похожей задачей :-) Не за что)
Aexx вне форума   Ответить с цитированием
Старый 22.01.2010, 16:41   #9
Cpluser
Участник клуба
 
Аватар для Cpluser
 
Регистрация: 16.02.2009
Сообщений: 555
Репутация: 101
По умолчанию

Есть Form1 и Form2 как зделать так чтоб то что мы ввели в textBox1 на Form2 передалось в Form1.
А вот так у меня чтото не получаетса
Главная форма:
Код:

Form2 subForm = new Form2();
subForm.Owner = this;
subForm.ShowDialog();

Дочерняя форма:
Код:

Form1 mainForm = (Form1)this.Owner;


Помогите пожалутса!!
Cpluser вне форума   Ответить с цитированием
Старый 22.01.2010, 19:26   #10
Hollander
Профессионал
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Адрес: Беларусь
Сообщений: 1,188
Репутация: 469

skype: taradeikoartem
По умолчанию

Цитата:
Сообщение от Cpluser Посмотреть сообщение
Есть Form1 и Form2 как зделать так чтоб то что мы ввели в textBox1 на Form2 передалось в Form1.
А вот так у меня чтото не получаетса
Главная форма:
Код:

Form2 subForm = new Form2();
subForm.Owner = this;
subForm.ShowDialog();

Дочерняя форма:
Код:

Form1 mainForm = (Form1)this.Owner;


Помогите пожалутса!!
Ну как бы все гуд. Теперь только поставь обработчик на ввод в textBox1 и передавай в mainForm.
Только: я так понял, что ты
Код:
Form1 mainForm = (Form1)this.Owner;
делаешь в конструкторе. А надо объявить в классе(т.е. в форме) поле
Код:
Form1 mainForm = null;
А в конструкторе:
Код:
mainForm = (Form1)this.Owner;
тогда будешь иметь доступ к mainForm из Form2.
И получится:
Код:
void Обработчик_ввода_textBox1(параметры)
{
mainForm.Какой-то_public_метод(textBox1.Text);
}
Hollander вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
MS SQL Server 2008 и Visual Studio 2008 C# (Как работать с БД?) cherw9!40k Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) 2 14.01.2010 21:51
Проблема с windows visual styles в Visual studio 2008 express. [awa Visual C++ 2 09.01.2010 07:05
Visual Studio Standard 2008 против Visual Studio Express 2008. Стоит ли покупать? Casper-SC Софт 4 31.12.2009 12:46
VISUAL STUDIO 2008 defaul language - как переключить в VISUAL STUDIO 2008 язык программирования, использ Эйнж Общие вопросы C/C++ 0 27.12.2009 21:39
Как включить pdh.lib в Visual Studio 2008? PMike Помощь студентам 2 16.04.2009 15:44


18:30.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.