C# событие Form_load

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by eregis, 15 May 2012.

  1. eregis

    eregis Member

    Joined:
    15 Jul 2010
    Messages:
    104
    Likes Received:
    5
    Reputations:
    -5
    Добрый день, после вызова метода
    Code:
    public void data_load()
            {
                dataGridView1.DataSource = bindingSource1;  
                dataGridView2.DataSource = bindingSource2;
                dataGridView3.DataSource = bindingSource3;
                dataGridView4.DataSource = bindingSource4;
                dataGridView1.ResetBindings();
                dataGridView2.ResetBindings();
                dataGridView3.ResetBindings();
                dataGridView4.ResetBindings();
                if (Form1.access == 1)
                {
                    bindingSource1.DataSource = Form1.select("SELECT * FROM Працівники ORDER BY id", "Працівники").Tables["Працівники"];
                    bindingSource2.DataSource = Form1.select("SELECT * FROM Замовлення ORDER BY Код", "Замовлення").Tables["Замовлення"];
                    bindingSource3.DataSource = Form1.select("SELECT * FROM Поставщики ORDER BY Код", "Поставщики").Tables["Поставщики"];
                    bindingSource4.DataSource = Form1.select("SELECT * FROM Матеріали ORDER BY Код", "Матеріали").Tables["Матеріали"];
                }
                else if (Form1.access == 4)
                {
                    bindingSource2.DataSource = Form1.select("SELECT Код,Адреса,Опис,Ціна,Контакти FROM Замовлення WHERE Наявність_проекту=True AND " + sql + " ORDER BY Код", "Замовлення").Tables["Замовлення"];
                    dataGridView2.ReadOnly = true;
                    bindingSource4.DataSource = Form1.select("SELECT Код,Назва,Характеристики,Кількість FROM Матеріали ORDER BY Код", "Матеріали").Tables["Матеріали"];
                }
                else if (Form1.access == 3)
                {
                    bindingSource2.DataSource = Form1.select("SELECT Код,Опис,Контакти,Ціна FROM Замовлення WHERE " + sql_2 + " ORDER BY Код", "Замовлення").Tables["Замовлення"];
                    dataGridView2.ReadOnly = true;
                }
                else if (Form1.access == 2)
                {
                    bindingSource1.DataSource = Form1.select("SELECT * FROM Працівники ORDER BY id", "Працівники").Tables["Працівники"];
                    dataGridView1.ReadOnly = true;
                    bindingSource2.DataSource = Form1.select("SELECT * FROM Замовлення ORDER BY Код", "Замовлення").Tables["Замовлення"];
                    bindingSource3.DataSource = Form1.select("SELECT * FROM Поставщики ORDER BY Код", "Поставщики").Tables["Поставщики"];
                }
            }
    
    который вызывается в событии Form2_Load
    после его вызова метод Form2_Load перестает выполнятся..
     
  2. Spot

    Spot Elder - Старейшина

    Joined:
    1 Mar 2007
    Messages:
    461
    Likes Received:
    38
    Reputations:
    1
    вместо if else лучше используй свич:
    Code:
    switch(Form1.access)
    
    {
    case 1:
    break;
    case 2:
    break;
    ...
    default: 
    break;
    }
    
    Покажи сам Form2_Load
     
  3. eregis

    eregis Member

    Joined:
    15 Jul 2010
    Messages:
    104
    Likes Received:
    5
    Reputations:
    -5
    Code:
        private void Form2_Load(object sender, EventArgs e)
            {
                label12.Visible = false;
                access_f(Form1.access);
                WindowState = FormWindowState.Maximized;
                MessageBox.Show("fefesf");
    
                #region Кнопки для каждой вкладки
                if (Form1.access == 1)
                {
                    // Первая
                    // Редактировать
                    editButton = new DataGridViewButtonColumn();
                    editButton.HeaderText = "Редагувати";
                    editButton.Text = "Редагувати";
                    editButton.UseColumnTextForButtonValue = true;
                    editButton.Width = 80;
                    dataGridView1.Columns.Add(editButton);
                    // Удалить
                    deleteButton = new DataGridViewButtonColumn();
                    deleteButton.HeaderText = "Видалити";
                    deleteButton.Text = "Видалити";
                    deleteButton.UseColumnTextForButtonValue = true;
                    deleteButton.Width = 80;
                    dataGridView1.Columns.Add(deleteButton);
                    // Конец
                    editButton1 = new DataGridViewButtonColumn();
                    editButton1.HeaderText = "Редагувати";
                    editButton1.Text = "Редагувати";
                    editButton1.UseColumnTextForButtonValue = true;
                    editButton1.Width = 80;
                    dataGridView2.Columns.Add(editButton1);
                    // 
                    deleteButton1 = new DataGridViewButtonColumn();
                    deleteButton1.HeaderText = "Видалити";
                    deleteButton1.Text = "Видалити";
                    deleteButton1.UseColumnTextForButtonValue = true;
                    deleteButton1.Width = 80;
                    dataGridView2.Columns.Add(deleteButton1);
                }
                else if (Form1.access == 2)
                {
                    editButton1 = new DataGridViewButtonColumn();
                    editButton1.HeaderText = "Редагувати";
                    editButton1.Text = "Редагувати";
                    editButton1.UseColumnTextForButtonValue = true;
                    editButton1.Width = 80;
                    dataGridView2.Columns.Add(editButton1);
                    // 
                    deleteButton1 = new DataGridViewButtonColumn();
                    deleteButton1.HeaderText = "Видалити";
                    deleteButton1.Text = "Видалити";
                    deleteButton1.UseColumnTextForButtonValue = true;
                    deleteButton1.Width = 80;
                    dataGridView2.Columns.Add(deleteButton1);
                }
                else if (Form1.access == 3)
                {
                    project = new DataGridViewButtonColumn();
                    project.HeaderText = "Спроектувати";
                    project.Text = "Спроектувати";
                    project.UseColumnTextForButtonValue = true;
                    project.Width = 80;
                    dataGridView2.Columns.Add(project);
                }
                else if (Form1.access == 4)
                {
                    catch_work = new DataGridViewButtonColumn();
                    catch_work.HeaderText = "Стан";
                    catch_work.Text = "Почати";
                    catch_work.UseColumnTextForButtonValue = true;
                    catch_work.Width = 80;
                    dataGridView2.Columns.Add(catch_work);
                }
    
                #endregion
    
                string[] mass = { "Директор", "Проектор", "Менеджер", "Інженер" };
                comboBox1.Items.AddRange(mass);
                string[] pos = { "1", "2", "3", "4" };
                comboBox2.Items.AddRange(pos);
                data_load();
            }
     
  4. eregis

    eregis Member

    Joined:
    15 Jul 2010
    Messages:
    104
    Likes Received:
    5
    Reputations:
    -5
    Кстате свич не помогает !!
     
  5. Spot

    Spot Elder - Старейшина

    Joined:
    1 Mar 2007
    Messages:
    461
    Likes Received:
    38
    Reputations:
    1
    А он и не должен был помочь - он только для удобочитаемости, а тебе важен этот пункт:
    label12.Visible = false;

    То есть когда кликаешь по форме, она становиться неактивной, если хочешь, что бы она снова была активной - то либо убери эту строчку, либо(я думаю будет правильней) добавь строчку:
    label12.Visible = true;

    в самом конце метода :
    public void data_load()


    Или в конце евента Form2_load , то есть после того как выполняться все пункты - форма снова станет активной.
     
    #5 Spot, 15 May 2012
    Last edited: 15 May 2012
  6. eregis

    eregis Member

    Joined:
    15 Jul 2010
    Messages:
    104
    Likes Received:
    5
    Reputations:
    -5
    нет, дело не в этом. Причем Label к Form ?? Это всего лишь лейбел становится невидимым.
     
  7. seosimf

    seosimf Member

    Joined:
    3 Mar 2011
    Messages:
    271
    Likes Received:
    44
    Reputations:
    6
    Метод data_load() вызывается в конце метода Form2_Load(), что еще должно выполняться в методе Form2_Load()?
     
    #7 seosimf, 16 May 2012
    Last edited: 16 May 2012
  8. Spot

    Spot Elder - Старейшина

    Joined:
    1 Mar 2007
    Messages:
    461
    Likes Received:
    38
    Reputations:
    1

    Тогда что не выполняется? Я так понял, что форма перестает быть видимой-кликабельной.

    data_load(); - вызывается, как правильно заметил оппонент выше, в самом конце. После этого следует завершение Form2_Load.
     
  9. eregis

    eregis Member

    Joined:
    15 Jul 2010
    Messages:
    104
    Likes Received:
    5
    Reputations:
    -5
    дело в том, что с начала вызывается метод, а потом в форм2_лоад иницилизируются кнопки
    editButton = new DataGridViewButtonColumn();
    editButton.HeaderText = "Редагувати";
    editButton.Text = "Редагувати";
    editButton.UseColumnTextForButtonValue = true;
    editButton.Width = 80;
    dataGridView1.Columns.Add(editButton);

    П.С. При отладке скопировал код и сбросил сюда...
     
  10. Spot

    Spot Elder - Старейшина

    Joined:
    1 Mar 2007
    Messages:
    461
    Likes Received:
    38
    Reputations:
    1
    Хорошо - сначала вызывается data_load() , а затем из неё должно вызываться Form2_Load , так?Но дело в том, что в data_load () ты некоим образом не вызываешь Form2_Load, тогда нужно симулировать евент Form2_Load в data_load(). Как у тебя вообще вызывается Form2_Load - через ui или ты хотел делать вызов через data_load()?
     
  11. CodeSender:)

    CodeSender:) Elder - Старейшина

    Joined:
    29 Jul 2010
    Messages:
    245
    Likes Received:
    115
    Reputations:
    23
    Лол, вы все ебанулись? Очевидно же Form2_Load не вызывается ибо форма уже создана.
     
  12. eregis

    eregis Member

    Joined:
    15 Jul 2010
    Messages:
    104
    Likes Received:
    5
    Reputations:
    -5
    Form2_Load - это событие, вызывается когда открывается вторая форма
     
  13. seosimf

    seosimf Member

    Joined:
    3 Mar 2011
    Messages:
    271
    Likes Received:
    44
    Reputations:
    6
    Ты сам себе противоречишь(сначала писал что в обработчике события вызывается метод), определись сначала что да как, а то все описанное вызывает когнитивный хаос.
     
  14. Spot

    Spot Elder - Старейшина

    Joined:
    1 Mar 2007
    Messages:
    461
    Likes Received:
    38
    Reputations:
    1

    Так, а что не работает - я так и не могу понять. Залей куда нибудь проект - глянем.
     
  15. eregis

    eregis Member

    Joined:
    15 Jul 2010
    Messages:
    104
    Likes Received:
    5
    Reputations:
    -5
    смотри, все просто
    есть метод
    public void data_load(){
    -----------
    }

    есть событие Form2_load
    private void Form2_Load(object sender, EventArgs e){
    data_load();
    --
    ---
    ----
    Код который не выполняется
    }
     
  16. Feonor

    Feonor Elder - Старейшина

    Joined:
    23 Jul 2008
    Messages:
    128
    Likes Received:
    52
    Reputations:
    19
    посмотри в режиме отладки, по шагам выполнение. чего ты голову морочишь? троль?
     
  17. eregis

    eregis Member

    Joined:
    15 Jul 2010
    Messages:
    104
    Likes Received:
    5
    Reputations:
    -5
    да нет, не троль. Просто я несколько дней с ним копался и мои вскипевшие мозги сдались и пытаются найти ответ...
    Проблему решил.
    Дело было в одном коряом запросе. (несколько символов было на другом языке)