Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.09.2010, 20:31   #1
Jeid
Пользователь
 
Регистрация: 18.08.2010
Сообщений: 15
По умолчанию Управление формами

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

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

И еще, как сделать глобальные переменные, которые будут доступны во всех формах?
Jeid вне форума Ответить с цитированием
Старый 20.09.2010, 20:44   #2
userdab
Пользователь
 
Регистрация: 04.09.2010
Сообщений: 28
По умолчанию

Вам поможет тема Вызов функции формы из другой формы
userdab вне форума Ответить с цитированием
Старый 21.09.2010, 08:14   #3
Jeid
Пользователь
 
Регистрация: 18.08.2010
Сообщений: 15
По умолчанию

Сделал как описано там, в первом примере, но возникает ошибка:
System.ArgumentException: Элемент с тем же ключём уже был добавлен
Вот код:
Код:
//вызов второго окна
Form2.Born(uid, ind, this);
-----------------------------------------------------------
public partial class Form2 : Form
    {
        private int user_id, index, room_id;
        private Form1 refForm;

        public Form2(int uid, int ind, Form1 refForm)
        {
            this.user_id = uid;
            this.index = ind;
            InitializeComponent();
            this.refForm = refForm;
        }

        public static void Born(int uid, int ind, Form1 refForm)
        {
            Form2 EditInfo = new Form2(uid, ind, refForm);
            EditInfo.ShowDialog();
            EditInfo.Dispose();
        }
}
Jeid вне форума Ответить с цитированием
Старый 21.09.2010, 09:24   #4
Jeid
Пользователь
 
Регистрация: 18.08.2010
Сообщений: 15
По умолчанию

А не, всё нормально. это я ступил со списками, не обнулял их.
Jeid вне форума Ответить с цитированием
Старый 21.09.2010, 12:38   #5
Jeid
Пользователь
 
Регистрация: 18.08.2010
Сообщений: 15
По умолчанию

Еще вопрос. у меня такая проблема, во втором окне я запускаю SQL запрос на обновление данных в базе, затем обращаюсь к первому окну где выбираю записи из базы, но вот такая проблема:
Данные в первом окошке сразу не обновляются - приходится нажимать по 2 раза на кнопку, я так понимаю, что записи выбираются еще до того как они успели обновиться, привожу код:
Код:
//Форм2
private void editInfoButton_Click(object sender, EventArgs e)
        {
            string Sql;
            Sql = "UPDATE users set zvanie = \"" + tZvanie.Text + "\", name = \"" + tName.Text + "\", 
orderFrom = \"" + tOrder.Text + "\", room_id = \"" + cbRoom.SelectedValue + "\" WHERE id = ?";
            //myCommand = new OleDbCommand();
            //Connect();
            myCommand.CommandText = Sql;
            myCommand.Parameters.Add("id", OleDbType.Integer, 32).Value = this.user_id;
            myCommand.ExecuteNonQuery();
            refForm.Rebind();
        }
Код:
//Форм1

public void Rebind()
        {
            dataGridView1.Rows.Clear();
            dataSet1.Tables["total"].Rows.Clear();
            UData.Clear();
            FillDataGrid();
        }

public void FillDataGrid()
        {
            int Count, vaCount;
            int oldRoom = 0;
            UserData URow;
            string Sql = "SELECT users.*, rooms.name as room FROM users inner join rooms on rooms.id = users.room_id 
order by rooms.name, users.name";
            string[] row;
            DateTime now = DateTime.Today;
            DateTime Order, vacFrom, vacTo;
            int DiffYear, DiffMonth;
            string OrderStr = "", vacStr = "";
            int newRow;

                myCommand.CommandText = Sql;
                dataAdapter.SelectCommand = myCommand;
                dataAdapter.Fill(dataSet1, "total");
                Count = dataSet1.Tables["total"].Rows.Count;
                for (int i = 0; i < Count; i++) {...........}
}

Так вот, как мне сделать что-то вроде ожидания, чтобы подождать пока обновятся записи в БД, а уж затем вызывать метод выборки записей. Можно конечно и Thread.Sleep(new Random().Next(1000, 5000)); но всё равно лучше узнать именно когда завершиться обновление, а не просто таймер поставить

Последний раз редактировалось Jeid; 21.09.2010 в 12:43.
Jeid вне форума Ответить с цитированием
Старый 21.09.2010, 12:48   #6
Jeid
Пользователь
 
Регистрация: 18.08.2010
Сообщений: 15
По умолчанию

З.Ы. покопаться как следует в интернете не всегда есть возможность т.к я ща в арми, а тут за это дело могут вы**ать
Jeid вне форума Ответить с цитированием
Старый 21.09.2010, 15:16   #7
mrChester
Я
Форумчанин
 
Аватар для mrChester
 
Регистрация: 24.04.2010
Сообщений: 693
По умолчанию

Пользуйтесь контролом dataSource, и сделайте в dataBinding установите значение изменяемых вам полей, тогда вообще не придется поля вручную заполнять
Все персонажи вымышлены, все совпадения случайны.
Если жизнь игра, тогда я её разработчик ©.
mrChester вне форума Ответить с цитированием
Старый 22.09.2010, 12:12   #8
Jeid
Пользователь
 
Регистрация: 18.08.2010
Сообщений: 15
По умолчанию

нет, мне нужно именно вручную т.к у меня там присутствуют заголовки выделенные жирным цветом и размещенные в нужной мне ячейке
Jeid вне форума Ответить с цитированием
Старый 22.09.2010, 12:13   #9
Jeid
Пользователь
 
Регистрация: 18.08.2010
Сообщений: 15
По умолчанию

Если нет никакого способа узнать о завершении выполнения запроса, тогда придётся вносить изменения вручную в нужную мне строку.
Jeid вне форума Ответить с цитированием
Старый 22.09.2010, 12:25   #10
mrChester
Я
Форумчанин
 
Аватар для mrChester
 
Регистрация: 24.04.2010
Сообщений: 693
По умолчанию

Тогда сделайте проверку выполнения команды.
Код:
if (myCommand.ExecuteNonQuery() != -1)
   refForm.Rebind();
Как-то так, но честно говоря не уверен, что прокатит
Все персонажи вымышлены, все совпадения случайны.
Если жизнь игра, тогда я её разработчик ©.
mrChester вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с формами dscoma Microsoft Office Word 5 18.08.2010 14:09
Запутался с формами iHikita Общие вопросы .NET 6 30.07.2010 16:08
C# программирование с формами Mechanix Помощь студентам 4 06.07.2010 17:19
Работа с формами Claster Общие вопросы Delphi 11 01.02.2010 17:09
Работа с формами HAMMAN Общие вопросы Delphi 1 26.04.2007 01:18