2010-07-01 129 views
1

我需要一些幫助將一些VB.NET代碼轉換爲C#。我嘗試了幾個「代碼轉換器」,但他們都沒有給我回復一個可行的答案。將VB轉換爲C#

下面的代碼:

If Me.OrdersDataGridView.SelectedRows.Count > 0 Then 
Dim editForm As New Order(Me.NorthwindDataSet, _ 
    Me.NorthwindDataSet.Orders.Rows.IndexOf_ 
    (CType(CType(Me.OrdersDataGridView.SelectedRows(0)._ 
    DataBoundItem, DataRowView).Row, NorthwindDataSet.OrdersRow))) 
    editForm.Show() 
End If 

任何幫助,這是非常感謝!

編輯:這裏是一個link原來的文章中,我發現這個在

回答

6

試試這個:

if (this.OrdersDataGridView.SelectedRows.Count > 0) 
{ 
    NorthwindDataSet.OrdersRow row = (NorthwindDataSet.OrdersRow) 
             ((DataRowView)this.OrdersDataGridView 
              .SelectedRows(0).DataBoundIte).Row; 

    Order editForm = new Order(
          this.NorthwindDataSet, 
          this.NorthwindDataSet.Orders.Rows.IndexOf(row)); 

    editForm.Show(); 
} 
+0

+1完美!謝謝。 – Sesame 2010-07-01 00:39:46

+0

安德魯我可能是錯的,但我認爲你有VB的風格索引SelectedRows,你離開了DataBoundItem米。但希望他可以在嘗試一次後認識到這一點,並讓它失敗。 – spinon 2010-07-01 00:41:43

+0

Spinon,你是對的,我做到了。 ;) – Sesame 2010-07-01 00:42:58

0
if (this.OrdersDataGridView.SelectedRows.Count > 0) 
{ 
    Order editForm = new Order(this.NorthwindDataSet, 
     this.NorthwindDataSet.Orders.Rows.IndexOf((NorthwindDataSet.OrdersRow)((DataRowView)this.OrdersDataGridView.SelectedRows[0].DataBoundItem).Row); 
    editForm.Show(); 
} 

好吧,我想我輸入了一個正確的。

0

如果代碼轉換器在這裏失敗,很可能是因爲您需要在Visual Studio解決方案中引用該特定數據庫以使其工作。

轉換應該是這樣的:

if (this.OrdersDataGridView.SelectedRows.Count > 0) 
{ 
    var dataRowView = (DataRowView) this.OrdersDataGridView.SelectedRows(0).DataBoundItem; 
    var ordersRow = (NorthwindDataSet.OrdersRow) dataRowView; 
    var editForm = new Order(this.NorthwindDataSet, ordersRow) 
    editForm.Show() 
}