同じフォーム (form1) で値を使用している場合、getPkRowReport() を実行すると正しく機能します。フォーム 2 の pk が必要な場合は、常に一番上の行にデフォルト設定され、フォーム 2 を起動する前に選択した行にはなりません。フォーム 2 を起動した後にフォーム 1 を見ると、正しい行が選択されていますが、まだトップ レコードの pk。どんな助けでも大歓迎です。
フォーム 1:
private int pkFromReport;
public int PkFromReport
{
get
{
pkFromReport = getPkRowReport();
return pkFromReport;
}
}
private int getPkRowReport()
{
if (dgvReportGrid.CurrentRow != null)
{
//get selected row index
int index = this.dgvReportGrid.CurrentRow.Index;
//get pk of selected row using index
string cellValue = dgvReportGrid["rptNo", index].Value.ToString();
//change pk string to int
int pKey = Int32.Parse(cellValue);
return pKey;
}
else
{
return -1;
}
}
フォーム 2:
private frmMain mainForm = new frmMain();
private void button1_Click(object sender, EventArgs e)
{
textBox1.Text = mainForm.PkFromReport.ToString();
}