Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
1 / 1 / 0
Регистрация: 20.08.2009
Сообщений: 58
1

И снова про взаимодействие форм

20.11.2009, 21:22. Показов 1134. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Есть у меня две формы. На первой я нажимаю кнопку, срабатывает событие и открывается вторая форма, на которой находится DataGrid. Затем после нажатия на кнопку, которая находится на второй форме, на первой форме срабатывает событие и TextBox первой формы принимает данные из DataGrid. Проблема состоит в том, что код получения данных у меня написан в первой форме (она как бы берет данные), а как мне сделать так, чтобы вторая форма отдавала бы эти данные, а получать я мог их любой другой формой? Вот мой код:
первая форма
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public partial class Dogovor : Form
    {
 
        //public event EventHandler selectDate;
 
        
        public Dogovor()
        {
            InitializeComponent();
            // Подписываемся на событие OpenClientsListButton.Click b вызываем метод
            //onOpenClientsListButton
            OpenClientsListButton.Click += new EventHandler(onOpenClientsListButton);
        }
 
        void onOpenClientsListButton(object sender, EventArgs e)
        {
            Clients clients = new Clients();
            clients.FormClosed += new FormClosedEventHandler(onClientsClosed);
            clients.ShowDialog();
        }        
 
         void onClientsClosed(object sender, EventArgs e)
        {
            Clients clients = (Clients)sender;
            FirstNameClientTextBox.Text = clients.ClientsGridView.SelectedCells[0].OwningRow.Cells.ToString();
        }
    
        private void OpenClientsListButton_Click(object sender, EventArgs e)
        {             
            
        }   
    }
}
вторая форма
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public partial class Clients : Form
    {
        public string selectDate = null;      
        
        public Clients()
          
        {
            InitializeComponent();            
        }                    
 
        DataView clientsDataView;        
 
        private void Clients_Load(object sender, EventArgs e)
        {
            clientsTableAdapter1.Fill(sequrityDatabaseDataSet1.Clients);
            clientsDataView = new DataView(sequrityDatabaseDataSet1.Clients);
            clientsDataView.Sort = "ClientID";
            ClientsGridView.DataSource = clientsDataView;
        }
 
        private   string  selectedDate()
        {
          return  ClientsGridView.SelectedCells.ToString();
            
        }
 
        private void SelectDateButton_Click(object sender, EventArgs e)
        {
            Close();                    
                  
        }             
    }
}
Спасибо!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.11.2009, 21:22
Ответы с готовыми решениями:

И снова про PopupMenu (было про длину, теперь про ширину)
Добавляем в пустое PopupMenu несколько пунктов динамически (шириной, например, до 50 символов)....

Взаимодействие форм
Имеется: Form1 Form2 содержит элемент datagridview Как можно обратиться в первой форме к...

Взаимодействие форм
Найти на форуме так и не смог эту реализацию. нужно из формы 1 вызвать кнопку в форме 2 прошу...

Взаимодействие форм
Здравствуйте, проблема такая: главная форма не хочет взаимодействовать с подчинённой: Формы...

7
1 / 1 / 0
Регистрация: 20.08.2009
Сообщений: 58
21.11.2009, 01:14  [ТС] 2
Немного переделал вторую форму. Теперь при нажатии кнопки SelectDateButton вызывается метод onSelectDateButton и форма закрывается. Посоветуйте пожалуйста , каким образом мне перед закрытием передать строку, которую я выбрал в DataGrid и в каком виде её нужно передавать и ещё как эти данные лучше принимать в первой форме? Спасибо!
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public partial class Clients : Form
    {
            
        
        public Clients()
          
        {
            InitializeComponent();   
            SelectDateButton.Click +=new EventHandler(onSelectDateButton);
        }
 
        void onSelectDateButton(object sender, EventArgs e)
        {
            Close();
        }
 
        DataView clientsDataView;        
 
        private void Clients_Load(object sender, EventArgs e)
        {
            clientsTableAdapter1.Fill(sequrityDatabaseDataSet1.Clients);
            clientsDataView = new DataView(sequrityDatabaseDataSet1.Clients);
            clientsDataView.Sort = "ClientID";
            ClientsGridView.DataSource = clientsDataView;
        }
                
        private void SelectDateButton_Click(object sender, EventArgs e)
        {
           
        }             
    }
}
0
73 / 70 / 12
Регистрация: 01.11.2009
Сообщений: 246
21.11.2009, 14:40 3
Вот что у меня получилось
1 форма
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public partial class Form1 : Form
    {
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void tabControl1_KeyDown(object sender, KeyEventArgs e)
        {
 
        }
 
        public void txt_change(Form2 f22)
        {
            f22.Text = "123123";
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            Form2 frm2 = new Form2(this);
 
            frm2.Show();
        }
 
        public void settexbox(string str)
        {
            textBox1.Text = str;
        }
 
    }
2 форма
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public partial class Form2 : Form
    {
        private Form1 f;
        public Form2(Form1 f1)
        {
            InitializeComponent();
            f = f1;
        }
 
        private void jurnalBindingNavigatorSaveItem_Click(object sender, EventArgs e)
        {
            this.Validate();
            this.jurnalBindingSource.EndEdit();
            this.tableAdapterManager.UpdateAll(this._clienti_moneyDataSet);
 
        }
 
        private void Form2_Load(object sender, EventArgs e)
        {
            // TODO: данная строка кода позволяет загрузить данные в таблицу "_clienti_moneyDataSet.jurnal". При необходимости она может быть перемещена или удалена.
            this.jurnalTableAdapter.Fill(this._clienti_moneyDataSet.jurnal);
 
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            f.txt_change(this);
            f.settexbox(jurnalDataGridView.SelectedCells[0].Value.ToString());
        }
    }
конешно надо переделать под себя, это тока пример
Миниатюры
И снова про взаимодействие форм   И снова про взаимодействие форм   И снова про взаимодействие форм  

0
1 / 1 / 0
Регистрация: 20.08.2009
Сообщений: 58
21.11.2009, 19:27  [ТС] 4
Спасибо огромное все получилось и тут же возник другой вопрос: а можно ли мне в моем случае передать из второй формы через sender всю строку в виде массива, а в первой форме (или в других формах) этот массив получать и там уже раскидывать данные по TextBox-ам.
Первая форма:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public partial class Dogovor : Form
    {
        public Dogovor()
        {
            InitializeComponent();            
        }       
 
        public  void onClientsClosed(object sender, EventArgs e)
        {
            FirstNameClientTextBox.Text = sender.ToString();            
        }
    
        private void OpenClientsListButton_Click(object sender, EventArgs e)
        {
            Clients clients = new Clients(this);
            clients.Show();            
        }   
    }
Вторая форма:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
public partial class Clients : Form
    {
        Dogovor dogovor;            
        
        public Clients(Dogovor dogovor1)
          
        {
            InitializeComponent();
            dogovor = dogovor1;
            SelectDateButton.Click +=new EventHandler(onSelectDateButton);
        }
 
        void onSelectDateButton(object sender, EventArgs e)
        {
            dogovor.onClientsClosed(ClientsGridView.CurrentRow.
                Cells[1].Value ,null);
            Close();
        }
 
        DataView clientsDataView;        
 
        private void Clients_Load(object sender, EventArgs e)
        {
            clientsTableAdapter1.Fill(sequrityDatabaseDataSet1.Clients);
            clientsDataView = new DataView(sequrityDatabaseDataSet1.Clients);
            clientsDataView.Sort = "ClientID";
            ClientsGridView.DataSource = clientsDataView;
        }
                
        private void SelectDateButton_Click(object sender, EventArgs e)
        {
                       
        }             
    }
Спасибо!
0
73 / 70 / 12
Регистрация: 01.11.2009
Сообщений: 246
21.11.2009, 19:30 5
Цитата Сообщение от Alexey1 Посмотреть сообщение
через sender
по-моему нет, но я сам то не профи...
0
1 / 1 / 0
Регистрация: 20.08.2009
Сообщений: 58
21.11.2009, 19:45  [ТС] 6
Спасибо за ответ, а что же лучше предпринять? Может кто скажет?
0
1 / 1 / 0
Регистрация: 20.08.2009
Сообщений: 58
22.11.2009, 11:56  [ТС] 7
Господа! Ответьте пожалуйста!
0
1 / 1 / 0
Регистрация: 20.08.2009
Сообщений: 58
22.11.2009, 14:43  [ТС] 8
ЭВРИКА!!!!!!!!!!
Все получилось и это здорово!!!
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public partial class Dogovor : Form
    {
        List<string> lst = new List<string>();
        
        public Dogovor()
        {
            InitializeComponent();            
        }       
 
        public  void onClientsClosed(object sender, EventArgs e)
        {            
            lst = (List<string>)sender;
            FirstNameClientTextBox.Text = lst[1];
            LastNameClientTextBox.Text = lst[2];        
           
        }
    
        private void OpenClientsListButton_Click(object sender, EventArgs e)
        {
            Clients clients = new Clients(this);
            clients.Show();            
        }   
    }

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
public partial class Clients : Form
    {
        Dogovor dogovor;
        List<string> lst = new List<string>();    
        
        
        public Clients(Dogovor dogovor1)
          
        {
            InitializeComponent();
            dogovor = dogovor1;
            SelectDateButton.Click +=new EventHandler(onSelectDateButton);
        }
 
        void onSelectDateButton(object sender, EventArgs e)
        {
            for (int i = 0; i < ClientsGridView.SelectedCells.Count; i++)
            {
                lst.Add(ClientsGridView.CurrentRow.Cells[i].Value.ToString());
            }
            
            sender = lst;
            dogovor.onClientsClosed(sender,null);
            Close();
        }
 
        DataView clientsDataView;        
 
        private void Clients_Load(object sender, EventArgs e)
        {
            clientsTableAdapter1.Fill(sequrityDatabaseDataSet1.Clients);
            clientsDataView = new DataView(sequrityDatabaseDataSet1.Clients);
            clientsDataView.Sort = "ClientID";
            ClientsGridView.DataSource = clientsDataView;
        }
                
        private void SelectDateButton_Click(object sender, EventArgs e)
        {
                       
        }
 
        
 
 
    }
Надеюсь, что это правильно!!!
Спасибо всем за содействие.
0
22.11.2009, 14:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.11.2009, 14:43
Помогаю со студенческими работами здесь

Взаимодействие форм
Здравствуйте. Подскажите как сделать. На form 1 есть два Edit (Edit1,Edit2) и кнопка. На форме 2...

взаимодействие форм
есть 2 формы. в первой в поле uses пишу init2 - работает во второй unit1 - не работает как...

Взаимодействие форм
Доброго времени суток. Нужна ваша помощь. Подскажите как передать текст из textbox формы 2 в...

Взаимодействие форм С++
Здравствуйте, подскажите пожалуйста как сделать. Мне нужно сделать что-то на подобии этой таблицы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru