2011-09-24 29 views
1

我有一個顯示管理器列表的DataGridView控件(DataGridView6)。每次我將新的經理添加到列表中並將其放在我的表單上的特定位置時,我想生成一個新的DataGridView如何在vb.net的另一個datagridview中爲每個新行創建一個新的DataGridView控件?

編輯:

說,如果我有一個主要的DataGridView,我想添加相同尺寸的正下方的另一個datagridview的,我怎麼會使用下你的答案所描述的事件處理程序方法實現這一目標?即時通訊不知道這是否是在程序中顯示新成員的最有效的方式,儘管...

如何儘可能簡單地做到這一點?

+0

你是如何填充DataGridView6的第一個地方? –

+0

作爲標籤建議,我使用mysql數據庫作爲我的datagridview6的數據源。我想爲添加到列表中的每個新管理器創建一個新的datagridview。 – daniel11

+0

你在開玩笑嗎?通常人們會馬上回答我的問題,但是我等了2周... :( – daniel11

回答

1

使用DataGridView的「RowsAdded」事件。每次向DataGridView6添加新行(即管理器)時,請讓事件處理程序創建一個新的DataGridView,並將其放置在您想要的位置。

如果沒有你的實現細節,很難給出更詳細的答案,但類似的東西應該工作。

編輯 - 所以像這樣?

DataGridView dgv = new DataGridView(); 
dgv.Location = new Point(DataGridView6.Location.X,DataGridView6.Location.Y + <somevalue>); 

如果需要繼續增加他們低於這個,你可以只讓你每次添加一個新的時間增加一個變量NextY。您可以將它們全部存儲在LinkedList或類似的東西中,以便您可以輕鬆訪問它們。

+0

ive更新了我的帖子,提供了更多信息,賞金在三天後過期了...:/ – daniel11

+0

已更新回答 – Ignacio

+0

這是完美的謝謝!我怎麼會得到我想要放置新的datagridview的xy座標?有沒有一個簡單的腳本,我可以寫,將顯示當前的座標,我指向我的鼠標? – daniel11

0

我不是在VB很好,所以我在C#中第一次寫入它:

DataGridView DataGridView6; 
DataGridView DataGridView7; 

DataGridViewRow CreateRow(object data) { 
    DataGridViewRow row = null; 
    int index = DataGridView6.Rows.Add(); 
    row = DataGridView6.Rows[index]; 
    // row.Cells[0] = something; 
    // basically, add your date 
    return row; 
} 

void DisplayManagerRow(DataGridViewRow row) { 
    DataGridView7.DataSource = null; 
    int columns = (DataGridView6.Columns != null) ? DataGridView6.Columns.Count : 0; 
    if ((row != null) && (0 < columns)) { 
    DataGridView7.Columns.Clear(); 
    List<DataGridViewColumn> cols = new List<DataGridViewColumn>(columns); 
    for (int i = 0; i < columns; i++) { 
     DataGridViewColumn dgvCol = (DataGridViewColumn)DataGridView6.Columns[i].Clone(); 
     DataGridView7.Columns.Add(dgvCol); 
    } 
    DataGridView7.Rows.Add(row); 
    } 
} 

現在,嘗試這種在VB:

private DataGridView6 As DataGridView 
private DataGridView7 As DataGridView 

Private Function CreateRow(ByVal data As Object) As DataGridViewRow 
    Dim index As Int16 = DataGridView6.Rows.Add() 
    Dim row As DataGridViewRow = DataGridView6.Rows(index) 
    ' row.Cells(0) = something 
    ' basically, add your date 
    Return row 
End Function 

Private Sub DisplayManagerRow(ByVal row As DataGridViewRow) 
    DataGridView7.DataSource = Nothing 
    Dim columns As Int32 = 0 
    If Not (DataGridView6.Columns = Nothing) Then 
    columns = DataGridView6.Columns.Count 
    End If 
    If ((row Is Not Nothing) And (0 < columns)) Then 
    DataGridView7.Columns.Clear() 
    Dim cols As List<DataGridViewColumn> = new List<DataGridViewColumn>(columns) 
    For (Dim i As Int32 = 0; i < columns; i++) 
     Dim dgvCol As DataGridViewColumn = CType(DataGridView6.Columns(i).Clone(), DataGridViewColumn) 
     DataGridView7.Columns.Add(dgvCol) 
    Next For 
    DataGridView7.Rows.Add(row) 
    End If 
End Sub 

我甚至不能記住如何在VB中編寫一個For循環!可憐!

這是否得到了重點呢?

難道這就是你想幹什麼?

相關問題