Модераторы: gambit, Partizan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вызов существующей формы, вызов существующей формы по событию 
:(
    Опции темы
PashaSem
Дата 1.5.2006, 00:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 90
Регистрация: 5.3.2006

Репутация: нет
Всего: нет



Помогите разобраться новичку. Спасибо за понимание.
В проекте две формы.
В  Solution Explorer добавили новую форму Form2.cs, как ее вызвать из Form1.cs по клику кнопки?

И чтоб во  второй форме  listBox1 отображал данные которые выводились в listbox первой формы?
Как и через что передавать данные?

Спасибо

 
PM MAIL   Вверх
Softaz
Дата 1.5.2006, 00:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


wasm
**


Профиль
Группа: Участник
Сообщений: 373
Регистрация: 16.1.2006

Репутация: 3
Всего: 16



Цитата(PashaSem @  1.5.2006,  00:20 Найти цитируемый пост)
В  Solution Explorer добавили новую форму Form2.cs, как ее вызвать из Form1.cs по клику кнопки?


Например, вызываем Form2 из Form1:
Если Вы ничего не меняли, то имя класса должно быть Form2
Код

Form2 frm2 = new Form2();
frm2.Show();


Цитата(PashaSem @  1.5.2006,  00:20 Найти цитируемый пост)
И чтоб во  второй форме  listBox1 отображал данные которые выводились в listbox первой формы?

Способов полно, имхо лучший - создать структуру или класс (лучше в новом отдельном файле) и заполнять ее из listBox1. Далее писать в listBox2. 


--------------------
Разочарованный в .NET
PM MAIL WWW   Вверх
Gesha
Дата 4.5.2006, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 170
Регистрация: 5.10.2005

Репутация: 2
Всего: 2



Цитата(PashaSem @  1.5.2006,  00:20 Найти цитируемый пост)
И чтоб во  второй форме  listBox1 отображал данные которые выводились в listbox первой формы?Как и через что передавать данные?


Можно так:
Конструктору второй формы передаешь ObjectCollection листбокса (который на первой форме). 
Получится следующее:
обработчик нажатия кнопки на форме1
Код

        private void button1_Click(object sender, EventArgs e)
        {
            Form2 f2 = new Form2(listBox1.Items);
            f2.ShowDialog();
        }


конструктор формы2
Код

        public Form2(ListBox.ObjectCollection col)
        {
            InitializeComponent();

            listBox2.Items.AddRange(col);
        }
 
--------------------
PM MAIL ICQ   Вверх
STEEL98
Дата 30.5.2006, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 26.5.2006

Репутация: нет
Всего: нет



А если мне необходимо передать из editbox-а Form2 , в label Form1 текс?  
PM MAIL   Вверх
ivashkanet
Дата 30.5.2006, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 11
Всего: 149



То на форме Form2 у тебя должна быть ссылка на  label в Form1, либо на всю форму Form1
Код

1) savedRefOnLabel.text ="jfhjsdhfjksdh"
2) savedRefOnForm1.Label.text ="dsdsddd"


Добавлено @ 13:21 
P.S. Ссылка на форму, это просто переменная типа Form1 (либо Form), которой была присвоена Form1
Аналогично про label  smile  
PM MAIL WWW ICQ   Вверх
STEEL98
Дата 30.5.2006, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 26.5.2006

Репутация: нет
Всего: нет



   Form1 fm = new Form1();
вот переменная на форму.. как сделать на label? 
PM MAIL   Вверх
ivashkanet
Дата 30.5.2006, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 11
Всего: 149



Цитата(STEEL98 @  30.5.2006,  15:49 Найти цитируемый пост)
Form1 fm = new Form1();

Не так, ты не понял.
В форме f2 должно быть свойство:
Код


form1 f1;

При создании экземпляра формы 2 ты делаешь такую штуку:
Код

f2 = new Form2();
f2.f1=this; // сохраняем ссылку на основную форму
f2.Show()

А теперь можно обратиться из формы 2 к форме 1:
Код

this.f1.Text="sfdf"

 
PM MAIL WWW ICQ   Вверх
ckopn
Дата 22.6.2006, 09:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 20.3.2006

Репутация: нет
Всего: нет



Есть форма 1 

        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Form f1 = new Form1();
            Application.Run(f1);

и форма 2

 private void button5_Click(object sender, EventArgs e)
        {
            
            Form2 f2 = new Form2();
            f2.ShowDialog();
            
        }

как при появлении формы 2
преносить текст из текстбоксов ф1 в лайбелы ф2?

 private void Form2_Load(object sender, EventArgs e)
        {
f2.label1.Text=  f1.TextBox1.Text;
        }

что за дела? некатит!!! нужно добавить Инклуд??? Но это же не билдер =(
 
PM MAIL   Вверх
ivashkanet
Дата 22.6.2006, 09:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 11
Всего: 149



Цитата(ckopn @  22.6.2006,  09:03 Найти цитируемый пост)
f1

На второй форме должна быть рабочая  smile ссылка на объект первой формы.
Глянь этот пост
P.S.  smile Используйте теги code для подсветки кода smile   

Это сообщение отредактировал(а) ivashkanet - 22.6.2006, 09:30
PM MAIL WWW ICQ   Вверх
ckopn
Дата 22.6.2006, 09:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 20.3.2006

Репутация: нет
Всего: нет



Непомогло  smile 
какой код нужно добавить?
я непонимаю
в билдере все так прсото. добавить нужно инклуде и имя заголовочного файла формы , чьи элементы нужно использовать. А тут как? 
PM MAIL   Вверх
ivashkanet
Дата 22.6.2006, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 11
Всего: 149



Цитата(ivashkanet @  22.6.2006,  09:29 Найти цитируемый пост)
Глянь этот пост

Перичитай мой пост 
PM MAIL WWW ICQ   Вверх
ckopn
Дата 22.6.2006, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 20.3.2006

Репутация: нет
Всего: нет



хотел обойти эту фишку через статические перененные.
но не получилось =(
Код

    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        static string f;
        static string i;
        static string o;
        static string org;
        static string dol;
        [STAThread]
        
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Form f1 = new Form1();
            Application.Run(f1);
        }
    }



потом в обработчике

Код

        private void button5_Click(object sender, EventArgs e)
        {
            this.textBox1.Text = f; 
            Form2 f2 = new Form2();
            
            f2.ShowDialog();
        }


читал пост , непонимаю тебя ivashkanet
подскажи что нужно сделать?

выскакивает вот такая ошибка Error    2    The name 'f2' does not exist in the current context    D:\Visual Studio 2005\Projects\bedjiki\bedjiki\Form2.cs    24    13    bedjiki

но ведь неймспейс  у форм один и тотже ? почему они нехотят контактировать?
 
PM MAIL   Вверх
ivashkanet
Дата 22.6.2006, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 11
Всего: 149



Цитата(ckopn @  22.6.2006,  10:18 Найти цитируемый пост)
но ведь неймспейс  у форм один и тотже ? почему они нехотят контактировать?

Самая главная проблемма в том, что в C# нет глобальных переменных smile На уровне namespace-а могут быть только классы. Ничего больше smile 

Цитата(ckopn @  22.6.2006,  10:18 Найти цитируемый пост)
The name 'f2' does not exist in the current context

Правильная ошибка. Ведь у тебя на второй форме нет поля с именем f2. Это поле первой формы.  Во второй форме нужно обращаться к ней (к самой себе, т.е.) через this, или без него вовсе.
Хоть что-то разъяснил?

 
PM MAIL WWW ICQ   Вверх
Kefir
Дата 22.6.2006, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

Репутация: нет
Всего: 87



эммм... я думаю, что намного проще (и понятнее автору темы) будет сделать так:
1. перенести зхначение f1.label1.Text в f2.label1.Text:
Код

onClick( ... )
{
  Form2 f2 = new Form2();
  f2.label1.Text = f1.label1.Text;
  f2.Show();
}


2. перенести зхначение f2.label1.Text в f1.label1.Text:
Код

onClick( ... )
{
  Form2 f2 = new Form2();
  f2.Show();
  f1.label1.Text = f2.label1.Text;
}

Что-то типа то... должно сработать, хотя, конечно, не риал-тайм во втором случае получился, т.к. Ф1 обновит значение только после закрытия Ф2  

Это сообщение отредактировал(а) Kefir - 22.6.2006, 11:26
PM MAIL WWW Skype   Вверх
ckopn
Дата 22.6.2006, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 20.3.2006

Репутация: нет
Всего: нет



Цитата(Kefir @ 22.6.2006,  11:25)
Код

onClick( ... )
{
  Form2 f2 = new Form2();
  f2.label1.Text = f1.label1.Text;
  f2.Show();
}


я так и делал 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0568 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.