Поскольку кнопка Реализует функцию form1 в cliequear в form2.NET C#

У меня есть формуляр 1, где я считаю созданной функцию "MostraTablaOperarias", которую показывает datagridview в формуляре 1, так как мне нужно, чтобы, щелкнув кнопку в формуляре, 2 привел в действие функцию "MostrarTablaOperarias" формуляра, 1.

КОД ФУНКЦИЯ MostrarTablaOperarias (FORM1)

public  void MostrarTablaOperarias()
    {

            conexion = new System.Data.OleDb.OleDbConnection();
            //Dataset normal
            dataSet2 = new DataSet();
            //DataAdapter normal
            dataSet3 = new DataSet();
            dataAdapter2 = new System.Data.OleDb.OleDbDataAdapter();
            //DataAadapter Gridview
            dataAdapter3 = new System.Data.OleDb.OleDbDataAdapter();
            conexion.ConnectionString = "Provider = Microsoft.ACE.OLEDB.12.0; Data Source = C:/Users/David/Desktop/RP NETEJANET/BD/BDNETEJANET.accdb";

            conexion.Open();
            string sqlAdmin = "SELECT * From Operarias";


            dataAdapter2 = new System.Data.OleDb.OleDbDataAdapter(sqlAdmin, conexion);
            dataAdapter2.Fill(dataSet2, "Operarias");





            dataAdapter3 = new System.Data.OleDb.OleDbDataAdapter(sqlAdmin, conexion);
            dataAdapter3.Fill(dataSet3, "Operarias");

            DataTable TablaOperarias = new DataTable();

            dataAdapter3.Fill(TablaOperarias);
            dgvO.DataSource = TablaOperarias;



            DataGridViewColumn column1 = dgvO.Columns[1];
            column1.Width = 220;

            DataGridViewColumn column2 = dgvO.Columns[2];
            column2.Width = 140;

            DataGridViewColumn column3 = dgvO.Columns[3];
            column3.Width = 100;

            DataGridViewColumn column4 = dgvO.Columns[4];
            column4.Width = 100;

            DataGridViewColumn column5 = dgvO.Columns[5];
            column5.Width = 100;

            DataGridViewColumn column6 = dgvO.Columns[6];
            column6.Width = 230;

            DataGridViewColumn column7 = dgvO.Columns[7];
            column7.Width = 150;

            DataGridViewColumn column8 = dgvO.Columns[8];
            column8.Width = 170;


            DataGridViewColumn column10 = dgvO.Columns[10];
            column10.Width = 80;








            maxRegistrosO = dataSet2.Tables["Operarias"].Rows.Count;


            conexion.Close();





            MessageBox.Show("prueba");

    }

КНОПКА MostrarTablaOperarias (FORM2)

private void button1_Click_1(object sender, EventArgs e)
    {


        MostrarTablaOperarias();
    }

PD: Это нуждалось в этом, чтобы мочь освежать datagridview в формуляре 1 после того, как 2 вводить данные в формуляре.

1
задан 06.11.2019, 16:12
1 ответ

Формульные 1 - класс, следовательно ты нуждаешься в том, чтобы иметь ссылку на Формуляр 1, который был бы доступным с формуляр 2, чтобы мочь использовать какие-то Ваш mГ©todos pГєblicos.

ты Можешь намереваться о том, чтобы переместить эту ссылку с формуляр 1 формуляр 2. Ты можешь осуществлять это, например, добавляя строитель к формуляр 2, где ты переместил ссылку формуляр 1 из следующей формы: Неспособные

     public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Form2 formulario2 = new Form2(this);
        }

        public void MostrarTablaOperarias()
        {
            //tareas para actualizar datagrid
        }


    }

: указатель this ссылается на класс, в котором estГЎ работая, в cГіdigo предыдущий deberГ, - когда это fromulario 1.

Потом, с формуляр 2, ты можешь использовать любой mГ©todo pГєblico формуляр 1 со ссылки, которую ты переместил. В твоем случае utilizarГ-схвати mГ©todo MostrarTablaOperarias () :

    public partial class Form2 : Form
    {
        Form1 fomularioAActualizar;
        public Form2()
        {
            InitializeComponent();
        }

        public Form2(Form1 formulario)
        {
            InitializeComponent();

            fomularioAActualizar = formulario;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            fomularioAActualizar.MostrarTablaOperarias();
        }
    }

Замечает: Имей в виду, что agreguГ© новый строитель, который получает как parГЎmetro ссылка на класс типа формульные 1. DeberГ-схвати делать это для того, чтобы cГіdigo оно функционировало.

4
ответ дан 01.12.2019, 12:34
  • 1
    Очень хороший ответ!!!! Желанный и спасибо за вклад. Только как ссылка, ты мог бы проверять CГіmo отвечать и шага делать , пробежавший для того, чтобы ты знал, как мы функционируем? – gbianchi♦ 06.11.2019, 16:41
  • 2
    Я не добиваюсь того, чтобы оно функционировало твоего способа, это сделал excatamente равно, ошибка, которая дала мне, - следующая: на точке " fomularioAActualizar. MostrarTablaOperarias (); " System. NullReferenceException: ' Ссылка на объект, не установленная как инстанция одного Оно Возражать ' – David Robles 06.11.2019, 18:05
  • 3
    System. NullReferenceException - ошибка, которую тебе бросает составитель, когда ты пробуешь соглашаться на класс, что не fué instanciada. Конечно, ты не переместил указатель this в формуляре 1, а именно, не переместил инстанцию формуляра 1 в формуляр 2. Я рекомендую тебе помещать точку interrupció n в твоем có я говорю точно в линии, где ты строишь формуляр два и verá s, что ты не перемещаешь правильной формы ссылку, потому что habrá конечно, стоимость null. – Spktro 06.11.2019, 20:40