Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 2
Регистрация: 13.04.2010
Сообщений: 60
1

Программа с несколькими окнами

30.04.2014, 20:39. Просмотров 923. Ответов 6
Метки нет (Все метки)

Создала программу с основным окном MainWindow, в методе вызываю другое окно BD_add. В BD_add вызываю значение переменных из MainWindow. В методе в котором вызываю эти переменные появляется ошибка:
Дополнительные сведения: Connection must be valid and open.
ругается при этим на строчку из основного окна
на строчку f.ShowDialog();
Подскажите, в чем косяк

Окно 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
32
33
34
 public partial class MainWindow : Window
    {
        //переменные
        public int user=10045; //номер преподователя
        ...
        public string nam1, nam2, nam3, nam4;
        public string Connect = "Database=elvira;Data Source=localhost;User Id=root;Password=";
        public string[] tab_in = new string[10];
        public string name_table;
        ...
    private void open_add_bd(object sender, RoutedEventArgs e) 
        {
            //tab_in[0] = "user"; в другом методе задаються
            //tab_in[1] = "name";
            //tab_in[2] = "type";
            //tab_in[3] = "checking";
            //name_table = "nagrad";
            
            BD_add f = new BD_add(); 
            f.text_nam1.Text = nam1; // полное наименование; в другом методе задаються
            f.text_nam2.Text = nam2; // тип
            f.comboBox_value1.Items.Add("Государственного уровня"); //0
            f.comboBox_value1.Items.Add("Регионального уровня"); //1
            f.comboBox_value1.Items.Add("Университета"); //2
            f.CommandText = "insert into " +
                                name_table + " (" + //nagrad
                                tab_in[0] + "," +
                                tab_in[1] + "," +
                                tab_in[2] + "," +
                                tab_in[3] + ") values ( '";
            f.Owner = this;
            f.ShowDialog();
        }
}
окно 2, метод при вызове которого появляеться ошибка

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public partial class BD_add : Window
    {
        public string CommandText;
 
        private void save_add_bd(object sender, RoutedEventArgs e) {
        MainWindow f0 = new MainWindow();
        CommandText = CommandText + f0.user + "','" + //user
                               value1.Text + "','" + //name 
                               comboBox_value1.SelectedIndex + "','false')";
         MySqlConnection myConnection2 = new MySqlConnection(f0.Connect);
         MySqlCommand myCommand2 = new MySqlCommand(CommandText, myConnection2);
         MySqlDataReader mdr2 = myCommand2.ExecuteReader();
         myConnection2.Close(); //Обязательно закрываем соединение!
        }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.04.2014, 20:39
Ответы с готовыми решениями:

Работа с несколькими окнами
Как реализовать работу c несколькими окнами в PascalAbc.net? К примеру, в одном окне летит шарик, а...

MessageBox с несколькими родительскими окнами
MessageBox с несколькими родительскими окнами - такое возможно? Нужно было отобразить MessageBox...

Qt Creator приложение с несколькими окнами
Здравствуйте! Подскажите, пожалуйста, можно ли в Qt Creator создать приложение с несколькими...

Работа с несколькими окнами одновременно
Необходимо чтобы 2 окна были открыты одновременно. сначала было согздана form1, затем я сделал...

6
28 / 28 / 10
Регистрация: 17.08.2010
Сообщений: 95
30.04.2014, 21:22 2
Да в коннекшине и косяк. Это не Силверлайтная тема.
Возьмите в левую руку дебагер, поставьте точку останова на строке с ExecuteReader и посмотрите чему же равен коннекшон.
Кстати на будущее, у вас там стоит очень правильный комментарий: Обязательно закрываем соединение!
Так вы его там закрываете совсем не обязательно. Погуглите соответствующие паттерны ADO.NET для открытия соединений. Есть правильный патерн, который гарантирует, что вы не оставите соединение открытым.
Успехов
0
0 / 0 / 2
Регистрация: 13.04.2010
Сообщений: 60
30.04.2014, 22:07  [ТС] 3
База у меня не подключена через ADO.. и увы но я не знаю другого способа подключения, не подскажите?

Добавлено через 30 минут
Все вопрос снят, нашла свой косяк... не подключала я базу... open не был...
А можно еще вопрос, не подскажите свойство у button на активное состояние кнопки и нет, чтобы пока не выполнилось условие, кнопку нельзя было нажать ( она не ярка, а сероватая будет... в виндовс формах было что-то похожие)
0
28 / 28 / 10
Регистрация: 17.08.2010
Сообщений: 95
01.05.2014, 17:29 4
У кнопки есть свойство IsEnabled, вы его хотите использовать?
0
0 / 0 / 2
Регистрация: 13.04.2010
Сообщений: 60
02.05.2014, 01:18  [ТС] 5
И снова вернусь к этому вопросу, но уже с другой стороны:

нужно организовать такой вызов окон, и их закрытие.
1. есть первое выходящее окно - регистрация.
2. в зависимости от того к какому типу относиться пользователь вошедший в систему он видит:
2а. окно с возможностью редактирования свой данных окно_1
2б. окно в котором ничего нельзя изменить, только просмотр окно_2

получается, пользователь ввел данные в окне регистрации, оно закрылось и сразу же вызвалось одно из двух окон... надо что-бы корректно закрывались окна и потоки не задействовались... так как из основной например вызвать другое окно можно:
C#
1
2
3
4
5
            BD_add f = new BD_add();
            f.tip_add = 0; //награда или звание
                         ...
            f.Owner = this;
            f.ShowDialog();
но когда я в окне BD_add что-то меняю из MainWindows, то программа зависает.
0
Администратор
Эксперт .NET
8804 / 4087 / 739
Регистрация: 17.04.2012
Сообщений: 8,915
Записей в блоге: 14
06.05.2014, 12:59 6
Цитата Сообщение от Vamp-girl Посмотреть сообщение
оно закрылось и сразу же вызвалось одно из двух окон
Вызов окна из закрывающегося окна можно организовать в обработчике события Closed
0
0 / 0 / 2
Регистрация: 13.04.2010
Сообщений: 60
07.05.2014, 23:50  [ТС] 7
Я немного по другому думаю решить проблему.
Вызывать до инициализации окно авторизации, и при определенных условиях вызывать следующие окна, так же в инициализации.. такую иерархию окон создать, если можно так сказать.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.05.2014, 23:50

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

HTA-приложение с несколькими окнами
Добрый день. Прошу помочь! Есть шаблон HTA-интерфейса с тремя кнопками. Мне нужно сделать кнопку...

Работа с несколькими окнами в Java
Здравствуйте. Такой вопрос, возможно уже избитый, но тем не менее для мня по прежнему актуальный. ...

Работа с несколькими окнами в одном приложении.
Программирую на Qt Widgets. В приложении используется не менее 3 окон, допустим окно авторизации,...

Переключение между несколькими графическими окнами
Здравствуйте! У меня есть простенькая программка, позволяющая построить прямую, параллельную...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.