Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在窗口中使用datagridview并在另一个窗口中显示其结果?_C#_Visual Studio - Fatal编程技术网

C# 如何在窗口中使用datagridview并在另一个窗口中显示其结果?

C# 如何在窗口中使用datagridview并在另一个窗口中显示其结果?,c#,visual-studio,C#,Visual Studio,我已经通过Visual Studio在C#中启动了一个Windows应用程序。到目前为止还不错,但现在我有个问题。我正在使用一个sql数据库,它有很多表。突然,我不知道如何在主窗口中显示选定的搜索结果,因为我只知道如何在同一表单中使用它,而不知道如何在另一表单中显示它的结果。我知道如何管理datagridview,但我不知道如何在不同的windows窗体中显示它的选定结果。 在任何情况下,你需要它的图片或代码行,我可以稍后上传它们(我现在正在工作) 非常感谢。您可以在结果表单上处理DataGri

我已经通过Visual Studio在C#中启动了一个Windows应用程序。到目前为止还不错,但现在我有个问题。我正在使用一个sql数据库,它有很多表。突然,我不知道如何在主窗口中显示选定的搜索结果,因为我只知道如何在同一表单中使用它,而不知道如何在另一表单中显示它的结果。我知道如何管理datagridview,但我不知道如何在不同的windows窗体中显示它的选定结果。 在任何情况下,你需要它的图片或代码行,我可以稍后上传它们(我现在正在工作)


非常感谢。

您可以在结果表单上处理
DataGridView
SelectionChanged()
事件,让它调用一个方法在主表单上执行某些操作,并将所需的数据传递给它


您可以在结果表单上处理
DataGridView
SelectionChanged()
事件,让它调用一个方法在主表单上执行某些操作,并将所需的数据传递给它


这两种形式之间的关系是什么?是否从主窗体打开包含DataGridView的窗体?如果是这样,您可以使用委托传输数据

MainForm.cs:

void frm_TransfEvent(string value)
{
    lbResult.Text = value;
}

private void btOpen_Click(object sender, EventArgs e)
{
    Form1 form1 = new Form1();
    form1.TransfEvent += frm_TransfEvent;
    form1.ShowDialog();
}
表格1.cs:

public event TransfDelegate TransfEvent;

private void btSend_Click(object sender, EventArgs e)
{
    int rowindex = dataGridView1.CurrentRow.Index;
    TransfEvent(dataGridView1.Rows[rowindex].Cells[0].Value.ToString() + ", " + dataGridView1.Rows[rowindex].Cells[1].Value.ToString());
    this.Close();
}
测试结果,

更新:

首先,我们需要在calss
Form2
中定义一个属性,以访问要修改的标签

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

    public Label labelProperty
    {
        get { return label1; }
        set { label1 = value; }
    }

    private void btOpenForm3_Click(object sender, EventArgs e)
    {
        Form3 form3 = new Form3();
        form3.Show();
    }
}
然后打开
Form7
form
Form3

private void btOpenForm7_Click(object sender, EventArgs e)
{
    Form7 form7 = new Form7();
    form7.Show();
}
要将数据从
Form7
传输到
Form2
,可以使用获取
Form2
的实例,并通过属性
labelProperty
访问标签

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

    private void btUpdateForm2_Click(object sender, EventArgs e)
    {
        Form2 form2 = (Form2)Application.OpenForms["Form2"];
        form2.labelProperty.Text = "Test 123";
    }
}

这两种形式之间的关系是什么?是否从主窗体打开包含DataGridView的窗体?如果是这样,您可以使用委托传输数据

MainForm.cs:

void frm_TransfEvent(string value)
{
    lbResult.Text = value;
}

private void btOpen_Click(object sender, EventArgs e)
{
    Form1 form1 = new Form1();
    form1.TransfEvent += frm_TransfEvent;
    form1.ShowDialog();
}
表格1.cs:

public event TransfDelegate TransfEvent;

private void btSend_Click(object sender, EventArgs e)
{
    int rowindex = dataGridView1.CurrentRow.Index;
    TransfEvent(dataGridView1.Rows[rowindex].Cells[0].Value.ToString() + ", " + dataGridView1.Rows[rowindex].Cells[1].Value.ToString());
    this.Close();
}
测试结果,

更新:

首先,我们需要在calss
Form2
中定义一个属性,以访问要修改的标签

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

    public Label labelProperty
    {
        get { return label1; }
        set { label1 = value; }
    }

    private void btOpenForm3_Click(object sender, EventArgs e)
    {
        Form3 form3 = new Form3();
        form3.Show();
    }
}
然后打开
Form7
form
Form3

private void btOpenForm7_Click(object sender, EventArgs e)
{
    Form7 form7 = new Form7();
    form7.Show();
}
要将数据从
Form7
传输到
Form2
,可以使用获取
Form2
的实例,并通过属性
labelProperty
访问标签

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

    private void btUpdateForm2_Click(object sender, EventArgs e)
    {
        Form2 form2 = (Form2)Application.OpenForms["Form2"];
        form2.labelProperty.Text = "Test 123";
    }
}

这回答了你的问题吗?这回答了你的问题吗?哦,天哪。这正是我需要做的。我知道如何以相同的形式管理数据,但不知道如何从Form1管理到MainForm。它应该是从三年级到二年级的,对吗?因为我使用MainForm只是为了登录system.btw,这对其他表单应该是一样的吗?还是只使用Form1到MainForm?因为我使用MainForm登录。此方法用于将数据从
子表单
传输到
父表单
。那么,Form2和Form3之间的关系是什么呢?Form2是Form3的父代。结果已经很好了。它是否应该从从表单3执行的其他表单中工作?让我们假设7年级和9年级,他们都来自3年级。这应该也行吧?@G.J.Gonzalez。您的意思是说,Form3是从Form2打开的,Form7和Form9是从Form3打开的,您需要将数据表从7和9转移到Form2吗?如果是这样,我建议使用。我已经更新了答案,你可以检查一下。如果有任何误解,请与我联系。哦,天哪。这正是我需要做的。我知道如何以相同的形式管理数据,但不知道如何从Form1管理到MainForm。它应该是从三年级到二年级的,对吗?因为我使用MainForm只是为了登录system.btw,这对其他表单应该是一样的吗?还是只使用Form1到MainForm?因为我使用MainForm登录。此方法用于将数据从
子表单
传输到
父表单
。那么,Form2和Form3之间的关系是什么呢?Form2是Form3的父代。结果已经很好了。它是否应该从从表单3执行的其他表单中工作?让我们假设7年级和9年级,他们都来自3年级。这应该也行吧?@G.J.Gonzalez。您的意思是说,Form3是从Form2打开的,Form7和Form9是从Form3打开的,您需要将数据表从7和9转移到Form2吗?如果是这样,我建议使用。我已经更新了答案,你可以检查一下。如果有任何误解,请与我联系。