如何将数据从DataGridView中传递到Form1到Form2?

Faysal131313.

新成员
加入
2019年9月1日
消息
3
编程经验
Beginner
如何将数据从Form1传递到TAMAGRIDVIEW中的数据

当我单击“搜索”按钮上的表格1时显示表格2
当我在DateGridView中选择行或更多时(以form2为单位)
它必须添加form1(在DataGridView中)....但是在DatagradView中的Form1中没有添加或更改
 

sh

众所周知的成员
加入
2018年9月5日
消息
1,982
编程经验
10+
当你没有向我们展示你尝试的东西时,很难确定问题。

根据您的DGV中有多少项,您可以在表单之间创建一个类的类对象来反弹。
 

Faysal131313.

新成员
加入
2019年9月1日
消息
3
编程经验
Beginner
这是代码
首先我制作form1,它包含DGV1和按钮搜索
我制作DGV修改器=公众
我希望从Form2(DGV2)取样到Form1(DGV1)

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

        private void button1_Click(object sender, EventArgs e)
        {
            Form2 frm = new Form2();
            frm.Show();
        }
    }
}

Form2:
namespace dgv
{
    public partial class Form2 : Form
    {
        DataTable dt = new DataTable();
        
        public Form2()
        {
            InitializeComponent();

            db.Open();
            db.GetData_DGV("select * from items ", dt);
            dgv2.DataSource = dt;
          
        }
        
        private void button1_Click(object sender, EventArgs e)
        {
            Form1 frm = new Form1();
            
            foreach (var dr in this.dgv2.SelectedRows)
            {
                var drv = dr as DataGridViewRow;
                frm.dgv1.Rows.Add(((DataRowView)drv.DataBoundItem).Row.ItemArray);
            }
        }
    }
 
最后编辑了主持人:

跳伞运动员

工作人员
加入
2019年4月6日
消息
2,867
地点
切萨皮克,va.
编程经验
10+
我建议返回您使用的C#教程,并查看实例的概念。

Presumably, your Program.cs instantiates a Form1 object and runs it. When the user clicks on the "Search" button which is presumably your button1 button, then in Form1.button1_Click(), you instantiate a new Form2 object. When you run the code for that instance in Form2.button1_Click(), you instantiate a brand new Form1 object. It is not the same instance that you had originally running at beginning in Program.cs.
 

跳伞运动员

工作人员
加入
2019年4月6日
消息
2,867
地点
切萨皮克,va.
编程经验
10+

jmplhinney.

C#论坛主持人
工作人员
加入
2011年4月23日
消息
3,703
地点
悉尼,澳大利亚
编程经验
10+
In Form2, you have code that creates a new Form1 instance and does something to it. How can that help you affect the Form1 instance that already exists? If you had a notepad and I went and bought a new notepad of the same type and wrote on it, would you expect what I wrote to magically appear in your notepad? Of course not, so why should that happen with forms? The proper way to do this is for Form2 to simply expose the data and then for Form1 to retrieve it.

我不知道在上面推荐的教程中的内容是什么,但您也可能在下面的签名中遵循博客链接,并在多种形式之间查看我的数据帖子。您可以跳过第一部分,因为这是特定于VB的。第2部分是快速和肮脏的方式,第3部分是正确的方法。

If you want to close the second form when the data is available then you should almost certainly be calling ShowDialog rather than Show. In that case, you can simply retrieve the data when the method returns. If Show is the right option because you want the second form to remain open then the second form should raise an event that the first form can handle in order to know when to retrieve the data. In fact, the data can even be provided by the event if you like. There's a post on Custom Events in my blog too.
 

Faysal131313.

新成员
加入
2019年9月1日
消息
3
编程经验
Beginner
In Form2, you have code that creates a new Form1 instance and does something to it. How can that help you affect the Form1 instance that already exists? If you had a notepad and I went and bought a new notepad of the same type and wrote on it, would you expect what I wrote to magically appear in your notepad? Of course not, so why should that happen with forms? The proper way to do this is for Form2 to simply expose the data and then for Form1 to retrieve it.

我不知道在上面推荐的教程中的内容是什么,但您也可能在下面的签名中遵循博客链接,并在多种形式之间查看我的数据帖子。您可以跳过第一部分,因为这是特定于VB的。第2部分是快速和肮脏的方式,第3部分是正确的方法。

If you want to close the second form when the data is available then you should almost certainly be calling ShowDialog rather than Show. In that case, you can simply retrieve the data when the method returns. If Show is the right option because you want the second form to remain open then the second form should raise an event that the first form can handle in order to know when to retrieve the data. In fact, the data can even be provided by the event if you like. There's a post on Custom Events in my blog too.

谢谢你的回复,但我很抱歉我的问题我在VB中,我试着通过专业学习学习C#
但此代码在VB中工作,来自Form1的VB和路径数据以形成2
 

跳伞运动员

工作人员
加入
2019年4月6日
消息
2,867
地点
切萨皮克,va.
编程经验
10+
它看起来像你的只是扫描代码来复制和粘贴来自博客文章,而不是实际阅读伴随的文本。继续阅读他的博文。它有3个部分。正如他所说,前2部分位于VB.NET中,但第3部分是C#和VB.NET。正确的方法是第3部分。

或者你可以看看Curtis的教程,这是C#,但再次,你应该阅读来了解概念并理解为什么事情做到这一点,否则你只会做货物邪教编程。
 

jmplhinney.

C#论坛主持人
工作人员
加入
2011年4月23日
消息
3,703
地点
悉尼,澳大利亚
编程经验
10+
正如他所说,前2部分位于VB.NET中,但第3部分是C#和VB.NET。正确的方法是第3部分。
实际上,第2和第3部分提供了VB和C#示例。它只是VB特定的第1部分,因为它使用默认表单实例。
 

jmplhinney.

C#论坛主持人
工作人员
加入
2011年4月23日
消息
3,703
地点
悉尼,澳大利亚
编程经验
10+
谢谢你的回复,但我很抱歉我的问题我在VB中,我试着通过专业学习学习C#
但此代码在VB中工作,来自Form1的VB和路径数据以形成2
如果您可以获得特定的说明并简单地忽略它们,那么您难以理解自己学习。如果您看过我的博客文章的第2和3部分,因为我指示你已经看到了有C#示例。我怀疑这里有语言问题,但如果您要以英语提出一个问题,那么您需要至少在英语中提供的答案的基础知识。
 

丹林

活跃的成员
加入
2018年10月19日
消息
28
编程经验
10+
我个人决定这个问题

将数据保存到磁盘并从磁盘读取
 
最后编辑了主持人:

跳伞运动员

工作人员
加入
2019年4月6日
消息
2,867
地点
切萨皮克,va.
编程经验
10+
但这是流程间通信的蛮力解决方案(例如,在两个不同的过程之间沟通)。 OP试图解决的问题用于过程内部通信(例如,在同一过程中通信)。将数据保存到文件中并在同一过程中重新读取,就像厨房里的父母在邻近的起居室向其青少年发送短信,告诉他们晚餐已准备就绪。当然,它有效,但它也在荒谬的身体上。
 
最佳 底部