次のクラスは、私が取り扱っておりますものの例である:バインドされたDataGridViewのセルのタグに値を設定するにはどうすればよいですか?
class Item
{
public int ID {get;set;}
public string Name {get;set;}
public int Quantity {get;set;}
public string Unit {get;set;}
public override string ToString()
{
return string.Format("{0}({1}){2}{3}", Name,Quantity,Environment.NewLine,Unit);
}
}
class Items
{
List<Item> _items;
public DataTable AllItems()
{
var dt = new DataTable();
// Some manipulation to convert the list to a datatable
// ...
return dt;
}
}
class UI
{
public void PopulateDatagridview()
{
//Some code to create the items
// ...
datagridview1.DataSource = items.AllItems();
}
private void datagridview1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control && e.KeyCode == Keys.C) // Control + c
{
// here I need to copy only the item name
}
}
}
私はグリッドからのみ、項目名をコピーする必要があり、シンプルで「醜い」ソリューションは、セルのテキストを解析することで、その後、アイテム名を取得します。 しかし、Item.ToString()が更新されるたびにこのコードを更新する必要があります。 しかし、1つの解決策は、各セルにアイテムIDを保存することでした。その方法でアイテムオブジェクトからアイテム名を簡単に取得できました。 アイテムIDをセルのTagプロパティに保存しますが、DataTableをDataSourceにバインドしてDataGridViewにデータを設定しているため、保存できません。
バインドされたDataGridViewのセルのタグに値を保存する方法はありますか?
DataGridViewで表示されないDataTableに新しい列を作成するとどうなりますか? – vasek
実際にはdatagridviewを複製しています。各セルのIDは – ehh
です。申し訳ありませんが、あなたのItemクラスがRowではなくCellを表しているという事実は私には分かりませんでした。 – vasek