DataGridView中添加控件
46. DataGridView中显示下拉框ComboBox
47. DataGridView单击打开下拉框
48. DataGridView中显示按钮
49. DataGridView中显示链接
50. DataGridView中显示图像
45. DataGridView列中显示选择框CheckBox
[VB.NET]
'CheckBox列を追加する
Dim column As New DataGridViewCheckBoxColumn
DataGridView1.Columns.Add(column)
[C#]
//CheckBox列を追加する
DataGridViewCheckBoxColumn column = new DataGridViewCheckBoxColumn();
DataGridView1.Columns.Add(column);
中间状态在内的三种状态表示
[VB.NET]
'3種類のチェック状態を表示できるようにする
Dim column As DataGridViewCheckBoxColumn = _
CType(DataGridView1.Columns(0),DataGridViewCheckBoxColumn)
column.ThreeState = True
[C#]
//3種類のチェック状態を表示できるようにする
DataGridViewCheckBoxColumn column =
(DataGridViewCheckBoxColumn)DataGridView1.Columns[0];
column.ThreeState = true;
46. DataGridView中显示下拉框ComboBox
[VB.NET]
'DataGridViewComboBoxColumnを作成
Dim column As New DataGridViewComboBoxColumn()
'ComboBoxのリストに表示する項目を指定する
column.Items.Add("日曜日")
column.Items.Add("月曜日")
column.Items.Add("火曜日")
column.Items.Add("水曜日")
column.Items.Add("木曜日")
column.Items.Add("金曜日")
column.Items.Add("土曜日")
'"Week"列にバインドされているデータを表示する
column.DataPropertyName = "Week"
'"Week"列の代わりにComboBox列を表示する
DataGridView1.Columns.Insert(DataGridView1.Columns("Week").Index,column)
DataGridView1.Columns.Remove("Week")
column.Name = "Week"
[C#]
//DataGridViewComboBoxColumnを作成
DataGridViewComboBoxColumn column = new DataGridViewComboBoxColumn();
//ComboBoxのリストに表示する項目を指定する
column.Items.Add("日曜日");
column.Items.Add("月曜日");
column.Items.Add("火曜日");
column.Items.Add("水曜日");
column.Items.Add("木曜日");
column.Items.Add("金曜日");
column.Items.Add("土曜日");
//"Week"列にバインドされているデータを表示する
column.DataPropertyName = "Week";
//"Week"列の代わりにComboBox列を表示する
DataGridView1.Columns.Insert(DataGridView1.Columns["Week"].Index,column);
DataGridView1.Columns.Remove("Week");
column.Name = "Week";
通过列Data绑定设置ComboBox
[VB.NET]
'ComboBoxに表示するためのリストを作成する
Dim weekTable As New DataTable("WeekTable")
weekTable.Columns.Add("Display",GetType(String))
weekTable.Columns.Add("Value",GetType(Integer))
weekTable.Rows.Add("日曜日",0)
weekTable.Rows.Add("月曜日",1)
weekTable.Rows.Add("火曜日",2)
weekTable.Rows.Add("水曜日",3)
weekTable.Rows.Add("木曜日",4)
weekTable.Rows.Add("金曜日",5)
weekTable.Rows.Add("土曜日",6)
'DataGridViewComboBoxColumnを作成
Dim column As New DataGridViewComboBoxColumn()
'"Week"列にバインドされているデータを表示する
column.DataPropertyName = "Week"
'DataGridViewComboBoxColumnのDataSourceを設定
column.DataSource = weekTable
'実際の値が"Value"列、表示するテキストが"Display"列とする
column.ValueMember = "Value"
column.DisplayMember = "Display"
'DataGridView1に追加する
DataGridView1.Columns.Add(column)
[C#]
//ComboBoxに表示するためのリストを作成する
DataTable weekTable = new DataTable("WeekTable");
weekTable.Columns.Add("Display",typeof(string));
weekTable.Columns.Add("Value",typeof(int));
weekTable.Rows.Add("日曜日",0);
weekTable.Rows.Add("月曜日",1);
weekTable.Rows.Add("火曜日",2);
weekTable.Rows.Add("水曜日",3);
weekTable.Rows.Add("木曜日",4);
weekTable.Rows.Add("金曜日",5);
weekTable.Rows.Add("土曜日",6);
//DataGridViewComboBoxColumnを作成
DataGridViewComboBoxColumn column = new DataGridViewComboBoxColumn();
//"Week"列にバインドされているデータを表示する
column.DataPropertyName = "Week";
//DataGridViewComboBoxColumnのDataSourceを設定
column.DataSource = weekTable;
//実際の値が"Value"列、表示するテキストが"Display"列とする
column.ValueMember = "Value";
column.DisplayMember = "Display";
//DataGridView1に追加する
DataGridView1.Columns.Add(column);
默认状态下,所有下拉框都显示;DisplayStyleForCurrentCellOnly=True的状态下,当前的单元格显示下拉框,其余不显示;还有一种就是光标移动时强调显示。如下图左中右三列。
47. DataGridView单击打开下拉框
通常情况下要打开下拉框需要点击目标单元格三次,第一次选中单元格,第二次进入编辑状态,第三次才能打开下拉框
[VB.NET]
'CellEnterイベントハンドラ
Private Sub DataGridView1_CellEnter(ByVal sender As Object,_
ByVal e As DataGridViewCellEventArgs) _
Handles DataGridView1.CellEnter
Dim dgv As DataGridView = CType(sender,DataGridView)
If dgv.Columns(e.ColumnIndex).Name = "ComboBox" AndAlso _
TypeOf dgv.Columns(e.ColumnIndex) Is DataGridViewComboBoxColumn Then
SendKeys.Send("{F4}")
End If
End Sub
[C#]
//CellEnterイベントハンドラ
private void DataGridView1_CellEnter(object sender,
DataGridViewCellEventArgs e)
{
DataGridView dgv = (DataGridView)sender;
if (dgv.Columns[e.ColumnIndex].Name == "ComboBox" &&
dgv.Columns[e.ColumnIndex] is DataGridViewComboBoxColumn)
{
SendKeys.Send("{F4}");
}
}
48. DataGridView中显示按钮
[VB.NET]
'DataGridViewButtonColumnの作成
Dim column As New DataGridViewButtonColumn()
'列の名前を設定
column.Name = "Button"
'全てのボタンに"詳細閲覧"と表示する
column.UseColumnTextForButtonValue = True
column.Text = "詳細閲覧"
'DataGridViewに追加する
DataGridView1.Columns.Add(column)
[C#]
//DataGridViewButtonColumnの作成
DataGridViewButtonColumn column = new DataGridViewButtonColumn();
//列の名前を設定
column.Name = "Button";
//全てのボタンに"詳細閲覧"と表示する
column.UseColumnTextForButtonValue = true;
column.Text = "詳細閲覧";
//DataGridViewに追加する
DataGridView1.Columns.Add(column);
按钮按下事件取得
[VB.NET]
'CellContentClickイベントハンドラ
Private Sub DataGridView1_CellContentClick(ByVal sender As Object,_
ByVal e As DataGridViewCellEventArgs) _
Handles DataGridView1.CellContentClick
Dim dgv As DataGridView = CType(sender,DataGridView)
'"Button"列ならば、ボタンがクリックされた
If dgv.Columns(e.ColumnIndex).Name = "Button" Then
MessageBox.Show((e.RowIndex.ToString() + _
"行のボタンがクリックされました。"))
End If
End Sub
[C#]
//CellContentClickイベントハンドラ
private void DataGridView1_CellContentClick(object sender,
DataGridViewCellEventArgs e)
{
DataGridView dgv = (DataGridView)sender;
//"Button"列ならば、ボタンがクリックされた
if (dgv.Columns[e.ColumnIndex].Name == "Button")
{
MessageBox.Show(e.RowIndex.ToString() +
"行のボタンがクリックされました。");
}
}
[VB.NET]
'DataGridViewLinkColumnの作成
Dim column As New DataGridViewLinkColumn()
'列の名前を設定
column.Name = "Link"
'全てのリンクに"詳細閲覧"と表示する
column.UseColumnTextForLinkValue = True
column.Text = "詳細閲覧"
'マウスポインタがリンク上にあるときだけ下線をつける
column.LinkBehavior = LinkBehavior.HoverUnderline
'自動的に訪問済みとならないようにする
'デフォルトでTrue
column.TrackVisitedState = True
'DataGridViewに追加する
DataGridView1.Columns.Add(column)
[C#]
//DataGridViewLinkColumnの作成
DataGridViewLinkColumn column = new DataGridViewLinkColumn();
//列の名前を設定
column.Name = "Link";
//全てのリンクに"詳細閲覧"と表示する
column.UseColumnTextForLinkValue = true;
column.Text = "詳細閲覧";
//マウスポインタがリンク上にあるときだけ下線をつける
column.LinkBehavior = LinkBehavior.HoverUnderline;
//自動的に訪問済みになるようにする
//デフォルトでTrue
column.TrackVisitedState = true;
//DataGridViewに追加する
DataGridView1.Columns.Add(column);
链接按下事件取得
[VB.NET]
'CellContentClickイベントハンドラ
Private Sub DataGridView1_CellContentClick(ByVal sender As Object,DataGridView)
'"Link"列ならば、ボタンがクリックされた
If dgv.Columns(e.ColumnIndex).Name = "Link" Then
MessageBox.Show((e.RowIndex.ToString() + _
"行のリンクがクリックされました。"))
'訪問済みにする
Dim cell As DataGridViewLinkCell = _
CType(dgv(e.ColumnIndex,e.RowIndex),DataGridViewLinkCell)
cell.LinkVisited = True
End If
End Sub
[C#]
//CellContentClickイベントハンドラ
private void DataGridView1_CellContentClick(object sender,
DataGridViewCellEventArgs e)
{
DataGridView dgv = (DataGridView)sender;
//"Link"列ならば、ボタンがクリックされた
if (dgv.Columns[e.ColumnIndex].Name == "Link")
{
MessageBox.Show(e.RowIndex.ToString() +
"行のリンクがクリックされました。");
//訪問済みにする
DataGridViewLinkCell cell =
(DataGridViewLinkCell)dgv[e.ColumnIndex,e.RowIndex];
cell.LinkVisited = true;
}
}
50. DataGridView中显示图像
[VB.NET]
'DataGridViewImageColumnの作成
Dim column As New DataGridViewImageColumn()
'列の名前を設定
column.Name = "Image"
'Icon型ではなく、Image型のデータを表示する
'デフォルトでFalseなので、変更する必要はない
column.ValuesAreIcons = False
'値の設定されていないセルに表示するイメージを設定する
column.Image = New Bitmap("C:/null.gif")
'イメージを縦横の比率を維持して拡大、縮小表示する
column.ImageLayout = DataGridViewImageCellLayout.Zoom
'イメージの説明
'セルをクリップボードにコピーした時に使用される
column.Description = "イメージ"
'DataGridViewに追加する
DataGridView1.Columns.Add(column)
'"Image"列の一番上のセルのイメージを変更する
DataGridView1("Image",0).Value = New Bitmap("C:/top.gif") '
[C#]
//DataGridViewImageColumnの作成
DataGridViewImageColumn column = new DataGridViewImageColumn();
//列の名前を設定
column.Name = "Image";
//Icon型ではなく、Image型のデータを表示する
//デフォルトでFalseなので、変更する必要はない
column.ValuesAreIcons = false;
//値の設定されていないセルに表示するイメージを設定する
column.Image = new Bitmap("C://null.gif");
//イメージを縦横の比率を維持して拡大、縮小表示する
column.ImageLayout = DataGridViewImageCellLayout.Zoom;
//イメージの説明
//セルをクリップボードにコピーした時に使用される
column.Description = "イメージ";
//DataGridViewに追加する
DataGridView1.Columns.Add(column);
//"Image"列の一番上のセルのイメージを変更する
DataGridView1["Image",0].Value = new Bitmap("C://top.gif");
[VB.NET]
'イメージ列を取得
Dim imageColumn As DataGridViewImageColumn = _
CType(DataGridView1.Columns("Image"),DataGridViewImageColumn)
'セルスタイルのNullValueをnullにする
imageColumn.DefaultCellStyle.NullValue = Nothing
[C#]
//イメージ列を取得
DataGridViewImageColumn imageColumn =
(DataGridViewImageColumn)DataGridView1.Columns["Image"];
//セルスタイルのNullValueをnullにする
imageColumn.DefaultCellStyle.NullValue = null;