でのVisual Basicを使用しています
残念ながらあなたはDataGridViewの中でこれを行うことはできません。一度これを行う
GROUP USER
------ -----
Group1 User1
Group1 User2
Group1 User3
Group2 UserA
Group2 UserB
、その後、あなたはDataGridViewののCellFormatting
イベントを処理し、マッチ上のセルのe.FormattedValue
場合String.Empty
に値を設定することができます。ただし、このようになりますテーブルを作成することができます。次に、あなたのテーブルは次のように「見える」ようになります:
GROUP USER
------ -----
Group1 User1
User2
User3
Group2 UserA
UserB
これはあなたが探しているものです。グリッド線を消したい場合は、代わりにDataGridViewのCellPainting
イベントを処理して、適切な罫線、テキストなどを描画することができます。
更新:CellFormattingイベントを使用してセルの内容を非表示にする例を次に示します。この例では、自分のデータソースとしてListを使用していますが、これをSQLデータソース、DataTableなどに置き換えることができます。
public partial class Form1 : Form
{
private List<GroupUserRow> _rows = new List<GroupUserRow>();
public Form1()
{
InitializeComponent();
_rows.Add(new GroupUserRow { Group = "Group1", User = "User1" });
_rows.Add(new GroupUserRow { Group = "Group1", User = "User2" });
_rows.Add(new GroupUserRow { Group = "Group1", User = "User3" });
_rows.Add(new GroupUserRow { Group = "Group2", User = "UserA" });
_rows.Add(new GroupUserRow { Group = "Group2", User = "UserB" });
dataGridView1.DataSource = _rows;
}
private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if (e.RowIndex >= 0 && e.ColumnIndex == 0)
{
int prevRowIndex = e.RowIndex - 1;
if (prevRowIndex >= 0 && dataGridView1[0, prevRowIndex].Value == e.Value)
{
//this just "hides" the value from the screen, the value is not
//removed from the cell
e.Value = String.Empty;
e.FormattingApplied = true;
}
}
}
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex >= 0 && e.ColumnIndex >= 0)
{
MessageBox.Show("This cell's value is: " + dataGridView1[e.ColumnIndex, e.RowIndex].Value);
}
}
}
public class GroupUserRow
{
public string Group { get; set; }
public string User { get; set; }
}
ありがとうございました!しかし、私はこれを以前行いました。私は何をしましたか?私は各グループを配列に配置していましたが、配列にグループが既に含まれていればString = ""しかし、DGVはセルをクリックするたびに再描画されます。だから私はグループ名でセルをクリックすると、配列内にあるかどうかをチェックします。グループに入っていることがわかると、それは空に設定されます。セルをクリックするたびに、文字列は空に設定されます。何か案は?また、CellPaintingに関する詳しい説明は参考になります。ありがとう! =) –
こんにちはジェームス!セルを隠すためにCellFormattingイベントを使用する例を追加しました。これがどうなるか教えてください! :-) –
ちょっとケビン!迅速な応答ありがとう!これは確かに大いに助けになった!!今私が心配している1つの質問は、私はすでにanwserを知っている、私はString.Emptyに設定されているセルの行全体を持っている場合は、単に行を削除する方法はありますか?私は行が削除された後にSQLクエリのためのDGVに十分なスペースがないことを不満をデータベースに問題に実行されています。私は100人以上のユーザーがいる場合は特に審美的に魅力的ではないので、主に尋ねます。また、ドラッグドロップ機能を追加する際に私が邪魔になるかもしれません。ありがとう! =) –