我有一个显示管理器列表的DataGridView
控件(DataGridView6)。我想生成一个新的DataGridView
,每次我添加一个新的经理列表,并把它放在我的表单上的特定位置。
说,如果我有一个主datagridview,我想在它下面直接添加另一个相同大小的datagridview,我如何使用下面的答案中描述的事件处理程序方法来实现这一点?我不确定这是否是在程序中显示新成员的最有效方式…
我怎样才能尽可能简单地做到这一点?
使用DataGridView的"RowsAdded"事件。每次你添加一个新的行(即管理器)到DataGridView6,有事件处理程序创建一个新的DataGridView,并把它放在你想要的地方。
如果没有具体的实现,很难给出更详细的答案,但类似的东西应该可以工作。
编辑-是这样的吗?
DataGridView dgv = new DataGridView();
dgv.Location = new Point(DataGridView6.Location.X,DataGridView6.Location.Y + <somevalue>);
如果您需要在此下面不断添加它们,您可以创建一个变量NextY,每次添加新变量时都增加该变量。你可以将它们全部存储在LinkedList或类似的东西中,这样你就可以很容易地按顺序访问它们。
我不太擅长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循环!可悲的!
这能说明问题吗?
这是你想要做的吗?