【问题标题】:c# Pass data from Data table into another formc# 将数据表中的数据传递到另一个表单中
【发布时间】:2015-04-11 19:05:50
【问题描述】:

我对 c# 非常陌生,如果这是一个新手问题,我很抱歉。

我有一个带有连接到 MySQL 数据库的数据网格的表单。

我已经做到了,所以它会选择整行,当您双击该行时,它会打开一个新表单。

我现在要做的是在第二个表单中的一些文本框中填充用户在前一个表单中选择的数据。

这是我目前的代码。

public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            string connectionString = "datasource=*****;database=****;username=****;password=****;";
            string query = "select firstname, surname, email from users;";
            MySqlConnection connection = new MySqlConnection(connectionString);
            MySqlCommand command = new MySqlCommand(query, connection);
            connection.Open();
            MySqlDataAdapter adapter = new MySqlDataAdapter();
            adapter.SelectCommand = command;
            DataTable dTable = new DataTable();
            adapter.Fill(dTable);
            dataGridView1.DataSource = dTable;
            connection.Close();
        }

        private void viewData(object sender, DataGridViewCellEventArgs e)
        {
            Form2 secondForm = new Form2();
            secondForm.Show();
        }
    }

【问题讨论】:

标签: c# mysql datatable


【解决方案1】:

您需要在第二类的构造函数中将数据表作为变量发送:

例如 .. 在你的情况下:

public partial class Form1 : Form
    {
        public Form1()
        {
          //code that you have already wrote 
          Form2 f2 = new Form2(dTable);
          f2.ShowDialog();
        }
     }
public partial class Form2 : Form
    {
        public Form2(Datatable table)
        {
            //Do whatever you want with this table
            //Example 
            label1.Text = table.Rows[0][0].ToString();
        }
    }

干杯!

【讨论】:

    【解决方案2】:

    在其中创建带有DataTable 的全局公共Class

    喜欢

    public static class Globals
    {
    DataTable Globaldt=new DataTable();
    }     
    

    像在 Form2 上一样访问它

    DataTable dt=Globals.Globaldt;
    

    【讨论】:

    • 使用这种方法很糟糕..这会使内存过载
    【解决方案3】:

    您可以将字符串数据传递给 Form2 的构造函数。示例:

    表格2:

    public partial class Form2 : Form
        {
            public Form2()
            {
              ....
            }
    
            public Form2(string data)
            {
              textBox1.Text=data;
            }
    
        }
    

    在 Form1 上:

    .......
     private void viewData(object sender, DataGridViewCellEventArgs e)
            {
                string mydata=///...
                Form2 secondForm = new Form2(mydata);
                secondForm.Show();
            }
    

    【讨论】:

      猜你喜欢
      • 2015-12-26
      • 1970-01-01
      • 2017-06-01
      • 2013-01-19
      • 1970-01-01
      • 2023-03-11
      相关资源
      最近更新 更多