【发布时间】:2015-12-28 12:02:16
【问题描述】:
正如标题所说,我希望能够从 List 在 DataGridView 中添加按钮。
到目前为止我所拥有的:
public class Users
{
public Int64 UserID { get; set; }
public DataGridViewButtonColumn EmailAddress { get; set; }
public DataGridViewButtonColumn Gamertag { get; set; }
public DataGridViewButtonColumn Xuid { get; set; }
public String SignedIn { get; set; }
public String AutoSignin { get; set; }
public Image Gamerpic { get; set; }
}
private List<Users> GetUsersList()
{
try
{
List<Users> list = new List<Users>();
IEnumerable<XboxUser> users = _xbc.Users;
foreach (XboxUser user in users)
{
DataGridViewButtonColumn EmailAddress = new DataGridViewButtonColumn()
{
Text = user.EmailAddress
};
DataGridViewButtonColumn Gamertag = new DataGridViewButtonColumn()
{
Text = user.GamerTag
};
DataGridViewButtonColumn Xuid = new DataGridViewButtonColumn()
{
Text = user.Xuid
};
Users xbuser = new Users()
{
UserID = user.UserId,
EmailAddress = EmailAddress,
Gamertag = Gamertag,
Xuid = Xuid,
SignedIn = user.IsSignedIn.ToString(),
AutoSignin = user.AutoSignIn.ToString(),
Gamerpic = GetImageFromUrl(Gamertag.Text)
};
list.Add(xbuser);
}
return list;
}
catch (Exception ex)
{
}
return null;
}
private void Bo_Refresh_Click(object sender, EventArgs e)
{
List<Users> listUsers = GetUsersList();
Dg_UserList.DataSource = new BindingSource(new BindingList<Users>(listUsers), null);
}
private void Dg_UserList_CellClick(object sender, DataGridViewCellEventArgs e)
{
switch (e.ColumnIndex)
{
case 1:
Clipboard.SetText(Dg_UserList.Rows[e.RowIndex].Cells["EmailAddress"].Value.ToString());
MessageBox.Show("Email " + Dg_UserList.Rows[e.RowIndex].Cells["EmailAddress"].Value.ToString() + " has been copied in the clipboard.", "Copy to Clipboard", MessageBoxButtons.OK, MessageBoxIcon.Information);
break;
case 2:
Clipboard.SetText(Dg_UserList.Rows[e.RowIndex].Cells["Gamertag"].Value.ToString());
MessageBox.Show("Gamertag " + Dg_UserList.Rows[e.RowIndex].Cells["Gamertag"].Value.ToString() + " has been copied in the clipboard.", "Copy to Clipboard", MessageBoxButtons.OK, MessageBoxIcon.Information);
break;
case 3:
Clipboard.SetText(Dg_UserList.Rows[e.RowIndex].Cells["Xuid"].Value.ToString());
MessageBox.Show("Xuid " + Dg_UserList.Rows[e.RowIndex].Cells["Xuid"].Value.ToString() + " has been copied in the clipboard.", "Copy to Clipboard", MessageBoxButtons.OK, MessageBoxIcon.Information);
break;
}
}
除了显示DataGridViewButtonColumn { Name=, Index=-1 }而不是带有正确值的按钮的按钮之外,一切都正确显示(甚至是Gamerpic中的图像)。
我也尝试了DataGridVewButtonCell,但也不起作用。
但是,当我点击一个应该是按钮的单元格时,Clipboard.SetText 可以工作,但总是将DataGridViewButtonColumn { Name=, Index=-1 } 放入其中。
编辑: 我已经能够用字符串来代替......看起来不太用户友好,因为没有按钮告诉你可以点击它......但它有效!当然我更喜欢按钮:)
【问题讨论】:
标签: c# list button datagridview datasource