gpt4 book ai didi

c# - 将方法的返回值设置为公共(public)字符串

转载 作者:太空狗 更新时间:2023-10-30 01:10:35 27 4
gpt4 key购买 nike

我试图在表单之间传递值 - 在本例中,是 DataGridView 中突出显示的单元格的结果。

在我的主窗体中,我使用公共(public)字符串方法获取值:

    public string GetCaseID()
{
int i;
i = dgCases.SelectedCells[0].RowIndex;
string caseid = dgCases.Rows[i].Cells[1].Value.ToString();
string version = dgCases.Rows[i].Cells[2].Value.ToString();
return version + "_c" + caseid;
}

//Form2 is launched
private void btnEvLvlUserSelect_Click(object sender, EventArgs e)
{
Form2 form2= new Form2();
form2.ShowDialog();
}

由于 GetCaseID() 被声明为公共(public)字符串,我应该可以从我的 Form2 调用它,对吗?

在 Form2 中,我只有这个:

    private void button1_Click(object sender, EventArgs e)
{
//Take selected case information
fmHome fmhome = new fmHome();
textBox1.Text = fmhome.GetCaseID();
}

我知道跨表单通信有效:如果我用普通的旧字符串替换 GetCaseID(),它将按预期显示在 Form2 中。

这是否与必须将 dgCases 也声明为公开有关?

谢谢。

最佳答案

button1_Click 中,您正在创建 fmHome 类的新实例。这是一个与创建它的 fmHome 实例不同的实例,因此它在 dgCases 中没有选定的行。在此实例上调用 GetCaseID() 不会返回您所期望的结果。

您的 button1_Click 处理程序需要有一种方法可以在打开它的表单上调用 GetCaseID()。一种非常基本的方法是在 Form2 上添加这样的属性:

public fmHome fmHomeParent { get; set; }

然后,当您打开 Form2 实例时,执行以下操作:

private void btnEvLvlUserSelect_Click(object sender, EventArgs e)
{
Form2 form2= new Form2();
form2.fmHomeParent = this;
form2.ShowDialog();
}

因此在您的 button1_Click 处理程序中,您可以访问该实例而不是创建一个新实例:

private void button1_Click(object sender, EventArgs e)
{
//Take selected case information
textBox1.Text = fmHomeParent.GetCaseID();
}

希望这对您有所帮助!

关于c# - 将方法的返回值设置为公共(public)字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4460733/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com