0 / 0 / 0
Регистрация: 07.01.2015
Сообщений: 39
1

Можно ли через ComboBox открывать формы

24.05.2015, 15:30. Показов 2507. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Подскажите пожалуйста, можно ли через Combobox открывать формы. Я знаю как только через кнопки, но у меня 5 таблиц и главное форма получается очень нагроможденной, так как на ней присутствует ДатаГрид.

 Комментарий модератора 
Название темы должно отражать ее суть
Combobox - самое неподходящее название
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.05.2015, 15:30
Ответы с готовыми решениями:

Как можно открывать и сохранять файл через диалоговые окна?
Есть типизированная файловая переменная, как можно открывать и сохранять файл через диалоговые окна?

Можно ли из MDIchild формы открывать другую Mdichild форму?
Поясню. Mdichild(дочерняя форма) содержится в mdiform(родительская форма), из родительской формы...

Выбрать фон формы через combobox
Нужна программа, чтобы из меня комбокс выбирать фон изображения. пока сделала вот так, но выдает...

Выбрать определенный компонент формы через combobox
Добрый всем день! Подскажите пожалуйста, можно ли сделать так, что при выборе какого-либо значения...

15
Эксперт .NET
17685 / 12871 / 3365
Регистрация: 17.09.2011
Сообщений: 21,136
24.05.2015, 16:00 2
Цитата Сообщение от Jool Посмотреть сообщение
можно ли через Combobox открывать формы.
Конечно можно, в этом плане выпадающий список ничем не отличается от кнопки.

Выбирайте событие, которое будете обрабатывать, например SelectedIndexChanged, и в его обработчике открывайте какую нужно форму.
0
0 / 0 / 0
Регистрация: 07.01.2015
Сообщений: 39
24.05.2015, 17:08  [ТС] 3
kolorotur, попробовала пойти легким путем, т.е. просто в Combobox прописать коды, которые я использовала для кнопок. ... Результат: самого выбора форм нет, но зато когда нажимаешь открываются все формы, код которых прописан в Комбо. (пока решила оставить эту идею ... вернусь к ней позже)

Вышла из ситуации таким образом, вместо Комбо исполосовала МенюСтрип.


Теперь вот какой вопрос: есть 3 хранимых процедуры. Как можно составит список в Комбо, чтобы потом выбирать нужную процедуру, и она бы отображалась на Гриде при нажатии на кпоку или без кнопки?
0
Эксперт .NET
5871 / 4748 / 2940
Регистрация: 20.04.2015
Сообщений: 8,361
24.05.2015, 17:27 4
по кнопке
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
private void button_Click(object sender, EventArgs e)
{
    switch (comboBox.SelectedIndex)
    {
        case 0:
            {
                //вызов первой хп
                break;
            }
        case 1:
            {
                //вызов второй хп
                break;
            }
        //и т.д.
    }
}
1
0 / 0 / 0
Регистрация: 07.01.2015
Сообщений: 39
24.05.2015, 17:30  [ТС] 5
Даценд, спасибо. Это понятно. А как сделать чтобы они отображались в Комбобоксе, или сами заносятся, когда я прописываю их в "// вызов ... хп"?
0
Эксперт .NET
5871 / 4748 / 2940
Регистрация: 20.04.2015
Сообщений: 8,361
24.05.2015, 17:38 6
Jool,
В комбобокс их заносить не нужно, тем более, что они в БД хранятся. Просто делаете в КБ список, например исходя из назначений процедур. А по индексу выбранного элемента списка в коде "// вызов ... хп" будет вызываться та или иная процедура.
1
0 / 0 / 0
Регистрация: 07.01.2015
Сообщений: 39
24.05.2015, 18:08  [ТС] 7
Даценд, не работает, при запуске Комбо чист.
Может я не правильно вызываю хранимую процедуру?
0
Эксперт .NET
5871 / 4748 / 2940
Регистрация: 20.04.2015
Сообщений: 8,361
24.05.2015, 18:23 8
Теперь я уже ничего не понимаю.
Что, где и когда должно отображаться?
1
0 / 0 / 0
Регистрация: 07.01.2015
Сообщений: 39
24.05.2015, 18:30  [ТС] 9
Даценд, форма (прикреплена картинкой)
Миниатюры
Можно ли через ComboBox открывать формы  
0
0 / 0 / 0
Регистрация: 07.01.2015
Сообщений: 39
24.05.2015, 18:32  [ТС] 10
Даценд, в Комбо должны находяиться Названия хранимых проедур, чтобы их в последствии отображить на Гриде

Добавлено через 56 секунд
Даценд, не понимаю, не могу найти в интернете и в других источниках как вывести хранимую процедуру

Добавлено через 47 секунд
Даценд, в сети есть разные способы, пробовала, но при запуске Комбо чист
0
Эксперт .NET
5871 / 4748 / 2940
Регистрация: 20.04.2015
Сообщений: 8,361
24.05.2015, 18:39 11
1) В свойствах комбобокса заполните свойство Items, откройте коллекцию и добавьте 3 строки. Например: Процедура1, Процедура2 и Процедура3. Теперь при открытии формы комбобокс не будет чист.
2) В зависимости от выбранного элемента в комбобоксе будет выполнен код одного из case'ов из приведенного выше обработчика щелчка по кнопке.
3) Вместо "//вызов ... хп" в коде нужно прописать вызов соответствующей процедуры и если это процедура делает select (выборку), результаты разместить на datagridview
1
0 / 0 / 0
Регистрация: 07.01.2015
Сообщений: 39
24.05.2015, 18:49  [ТС] 12
Даценд, наверно это я что-то не правильно делаю, вернее не правильно вызываю процедуру

C#
1
2
3
4
5
6
7
case 0:
            {
                //вызов первой хп
                strSQL = "SELECT DISTINCT  D.D, DNAME FROM DISCIPLINA D, DIS_SEM DS, GR_DIS GD, GRUPPA G WHERE DS.S = 'S1' AND G.G='1202' AND D.D=DS.D AND D.D=GD.D AND G.G=GD.G";
                dataGridView1.DataSource = strSQL;
                break;
            }
0
Эксперт .NET
5871 / 4748 / 2940
Регистрация: 20.04.2015
Сообщений: 8,361
24.05.2015, 19:09 13
Ну во-первых это не хранимая процедура, а SQL запрос. Во-вторых смотрите пример ниже (для SQL Server)
C#
1
2
3
4
5
6
7
8
SqlConnection conn=new SqlConnection("строка подключения");
conn.Open();
string strSQL = "текст запроса";
SqlDataAdapter da=new SqlDataAdapter(strSQL, conn);
DataTable dt = new DataTable();
da.Fill(dt);
grid.DataSource = dt;
conn.Close();
1
0 / 0 / 0
Регистрация: 07.01.2015
Сообщений: 39
24.05.2015, 19:12  [ТС] 14
Даценд, я не правильно писала сам вызов. Нашла код, все работает и отображает на грид

Добавлено через 1 минуту
Даценд, вот такой я нашла

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
case 0:
            {
                //вызов первой хп
                using (System.Data.SqlClient.SqlConnection myConn = new System.Data.SqlClient.SqlConnection(@"Data Source=ACERHOME;Initial Catalog=Base;Integrated Security=True"))
                {
                    myConn.Open();
                    System.Data.SqlClient.SqlCommand myCmd = new System.Data.SqlClient.SqlCommand();
                    myCmd.Connection = myConn;
                    myCmd.CommandType = CommandType.StoredProcedure;
                    myCmd.CommandText = "PROCEDURE1";
                    System.Data.SqlClient.SqlDataAdapter DA = new System.Data.SqlClient.SqlDataAdapter(myCmd);
                    DataTable DT = new DataTable();
                    DA.Fill(DT);
                    dataGridView1.DataSource = DT;
                }
                break;
            }
0
Эксперт .NET
5871 / 4748 / 2940
Регистрация: 20.04.2015
Сообщений: 8,361
24.05.2015, 19:18 15
Цитата Сообщение от Jool Посмотреть сообщение
Даценд, вот такой я нашла
Гут. То же самое, что и в моем примере. Только у меня для запроса, прописанного в коде, а у Вас для хранимой процедуры.
0
0 / 0 / 0
Регистрация: 07.01.2015
Сообщений: 39
24.05.2015, 19:29  [ТС] 16
Даценд, и последний вопрос (я не слишком надоедливая?)

Есть Класс и форма, на форме 3 RadioButton (добавить, удалить, показать)..... я уже заводила тут тему по этому поводу, но из ответов вообще ничего не поняла....

Вот Код класса и формы:

класс
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
class Class1
    {
        private SqlConnection con = new SqlConnection();
        public void OpenConnection(string SqlCn)
        {
            con.ConnectionString = SqlCn;
            con.Open();
        }
        public void CloseConnection()
        {
            con.Close();
        }
        // Удаление записи
        public void DeleteSupl(string id)
        {
            string sql = string.Format("Delete From GRUPPA where G='{0}'", id);
            using (SqlCommand cmd = new SqlCommand(sql, con))
                cmd.ExecuteNonQuery();
        }
 
        // Добавление записи
        public void InsertSupl(string id, int gkol)
        {
            string sql = string.Format("Insert Into GRUPPA" + "(G, GKOL) Values" + "('{0}', '{1}')", id, gkol);
            using (SqlCommand cmd = new SqlCommand(sql, con))
                cmd.ExecuteNonQuery();
 
 
        }
        // Поиск записи
        
             public DataTable LookforSupl(string id)
             {                 
           string sql = string.Format("Select * From GRUPPA where  G= '{0}'", id);
           using (SqlCommand cmd = new SqlCommand(sql, con))
           cmd.ExecuteReader();
 
        }
 
        
    }
форма
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
46
47
48
49
50
51
52
 // Удаление 
        private void DeleteSupp(Class1 ob)
        {
            string id = textBox1.Text;
            ob.DeleteSupl(id);
        }
 
        // Добавление 
        private void AddSupp(Class1 ob)
        {
            string id = textBox1.Text;
            int gkol = int.Parse(textBox2.Text);
            ob.InsertSupl(id, gkol);
        }
 
        // Поиск 
        private void LookforSupp(Class1 ob)
        {
            string id = textBox1.Text;
            dataGridView1.DataSource = ob.LookforSupl(id);
        }
 
...
 
private void button1_Click(object sender, EventArgs e)
        {
 
            string conStr = @"Data Source=ACERHOME;Initial Catalog=Base;Integrated Security=True"; 
            Class1 ob = new Class1();
            ob.OpenConnection(conStr);
            if (radioButton2.Checked == true)
            {
                DeleteSupp(ob);
                label3.Text = String.Format("Запись удалена");
 
            }
            if (radioButton1.Checked == true)
            {
                AddSupp(ob);
                label3.Text = String.Format("Запись добавлена");
            }
            if (radioButton3.Checked == true)
            {
                LookforSupp(ob);
               
                
            }
 
            textBox1.Clear();
            textBox2.Clear();
            
        }

Цитата Сообщение от kolorotur Посмотреть сообщение
Сами же говорите: выполнять НЕ запрос, вот и не получаете ничего обратно.
Вместо этого вызывайте какой-нибудь ExecuteReader и считывайте данные в гридвью или что у вас там для вывода используется.
Цитата Сообщение от wm_leviathan Посмотреть сообщение
попробую на пальцах объяснить: insert update и delete обычно (есть и исключения когда id надо вернуть например) ничего не возвращают, по принципу выполнился запрос - удалилась строка и все хорошо. НО select всегда возвращает набор данных который надо где то отображать. поэтому удобней результат запроса заносить в dataTable и подключать к гриду. в гриде отображается DataTable (т.е. сам результат запроса).


Даже на пальцах не понятно

Добавлено через 1 минуту
ой, там ошибочка в коде Класса
C#
1
2
3
4
5
6
7
8
9
        // Поиск записи
        
             public void LookforSupl(string id)
             {                 
           string sql = string.Format("Select * From GRUPPA where  G= '{0}'", id);
           using (SqlCommand cmd = new SqlCommand(sql, con))
           cmd.ExecuteReader();
 
        }
Добавлено через 1 минуту
Даценд, попробовала и ваш способ, он тоже рабочий. Спасибо. Оставлю оба
0
24.05.2015, 19:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.05.2015, 19:29
Помогаю со студенческими работами здесь

имя главной формы состоит из двух слов через пробел.. синтаксическая ошибка.. можно обойтись без переименования формы ?
Хм.. а у меня имя главной формы состоит из двух слов через пробел.. Записала в скобках, все равно...

Не открывать ComboBox если в списке не значений
Нужно запретить комбобоксу открываться, если в списке (Items) нет ни одного значения. А то в этом...

через что можно заливать текст в формы!
Подскажите плис! через что можно заливать текст в формы!

Не получается передать список элементов combobox одной формы в combobox другой
Есть две формы, на главной есть список комбобокс, на доченей тоже есть комбобокс... что в...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

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