美好的一天,
我现在正在编写一个PasswordManager,而且我一直在向DataGridView添加新行。
您可以在此处查看我的代码:PassMangaer
Engine / NewEntry.cs具有创建新条目并将其添加到BindingSource的代码。 之后,PassManger / frmAddNewEntry.cs将其添加到主Form上的DataGridView并刷新DataGridView。
实际上它只是用新的行替换了当前行,并且没有,因为它应该添加一个新行。
我在这里缺少什么?
答案 0 :(得分:1)
你的问题在frmAddNewEntry第18行,当你的创建BindingSource Bs = new BindingSource()时。 btnAddEntry_Click适用于空B。 我的建议是:
public void addNewEntry(BindingSource bs,int id,string hoster)
private void btnAddEntry_Click(object sender,EventArgs e) { string hoster = textBox1.Text; ne.addNewEntry(mainForm.Bs,1,hoster); mainForm.RefreshDGV(); this.Close(); }
不建议使用,但对于您的上一条评论,这将是快速热修复:
public void LoadData(DataGridView grid)
{
DataTable dataTable = new DataTable();
foreach (DataGridViewColumn col in grid.Columns)
{
dataTable.Columns.Add(new DataColumn(col.Name));
}
string file = "mygrid.bin";
using (BinaryReader bw = new BinaryReader(File.Open(file, FileMode.Open)))
{
int n = bw.ReadInt32();
int m = bw.ReadInt32();
for (int i = 0; i < m; ++i)
{
dataTable.Rows.Add();
for (int j = 0; j < n; ++j)
{
if (bw.ReadBoolean())
{
dataTable.Rows[i][j] = bw.ReadString();
dataTable.Rows[i][j] = Base64Decode(dataTable.Rows[i][j].ToString());
}
else bw.ReadBoolean();
}
}
}
grid.DataSource = dataTable;
}