2014-03-19 24 views
0

我有兩種形式,一種包含有從MS訪問數據源DataGridView控件。數據正確顯示在datagridview上。首先,我選擇該數據網格視圖的細胞,然後我獲得當前選擇的小區的行索引。我用行索引在一個訪問器功能(代碼是在主要形式):C#讀取的datagridview爲另一種形式

public String Name 
{ 
    get 
    { 
     return dataGridView1.Rows[selrow].Cells[1].Value.ToString(); 
    } 
} 

selrow包含當前選擇的小區的行索引。接下來,我點擊一個按鈕「編輯記錄」,這是顯示我的第二個窗體作爲模式窗體。我想顯示在文本框上面訪問者的價值,所以代碼是這樣(代碼是在第二形式):

​​

但是當我嘗試運行和調試,我得到這個「指數超出範圍必須爲非負數且小於集合參數名稱的大小:。指數衝着我的訪問功能」。我似乎無法找到問題的根源。先謝謝你。

+0

那麼你沒有正確存儲當前活動的細胞指數。 – MoonKnight

回答

1

如果我知道你想顯示的Editrecord文本框中從主要形式值形成。如果是這樣

Load處理程序創建主窗體(CashLoan)的新實例。
而從空的DataGridView試圖讀取值(我假設你不與構造器的數據填充的DataGridView)主要形式。

試試你的價值傳遞給EditRecord形式參數的構造器:
在EditRecord形式:

private String _originalValue; 
public EditRecord(String originalValue) 
{ 
    _originalValue = originalValue; 
} 
//Then in Load handler 
private void EditRecord_Load(object sender, EventArgs e) 
{ 
    this.txtEName.Text = _originalValue; 
} 

//In main form 
EditRecord frm = new EditRecord(this.name); 
frm.ShowDialog(); 
+0

是的,你正確理解我。謝謝!這個解決方案適合我。 – Julienn

1

嘗試

public String Name 
{ 
    get 
    { 
     return dataGridView1.Rows[dataGridView1.CurrentCell.RowIndex].Cells[1].Value.ToString(); 
    } 
} 

因爲我想你對目前的選定行的索引問題。也有可能您的行只有一個單元格。在這種情況下更換1與0原因指數從0開始(所以0 = 1,1 = 2等)

dataGridView1.Rows[selrow].Cells[0].Value.ToString(); 
相關問題