.NETプログラミング研究 第7号 †
お知らせ †
5月1日からメールマガジンの末尾に「まぐまぐからのお知らせ」が挿入されるようになったそうです。これは「.NETプログラミング研究」がメールマガジンの送信に利用させていただいている「まぐまぐ」が無料配信のすべてのメールマガジンに挿入しているもので、「.NETプログラミング研究」の発行人が入れているものではありません。私としても不本意なのですが、ご了承ください。
.NET Tips †
掲示板を見ていますと、DataGridコントロールに関する質問が非常に多いようです。しかしDataGridコントロールの使い方を解説したサイトはあまり見かけません。そこでDOBON.NETではDataGridコントロール(System.Windows.Forms)に関するTipsを紹介することにしました。この「.NETプログラミング研究」でも今回から集中的にDataGridコントロールに関するTipsを紹介していきます。
DataGridの現在のセルを取得、設定する †
説明の必要がないほどものすごく基本的なことですが、DataGridの現在のセルを取得、設定する方法を一応紹介しておきます。
DataGridの現在のセル(フォーカスのあるセル)はDataGridクラスのCurrentCellプロパティで取得、及び設定できます。
まず現在のセルを取得する例として、DataGrid1(DataGridオブジェクト)の現在のセルを取得し、その行、列数、値を表示する例を示します。
1
2
3
4
5
6
7
8
| | Dim c As DataGridCell = DataGrid1.CurrentCell
Dim rn As Integer = c.RowNumber
Console.WriteLine("選択されているセルの行:{0}", rn)
Dim cn As Integer = c.ColumnNumber
Console.WriteLine("選択されているセルの列:{0}", cn)
Console.WriteLine("選択されているセルの値:{0}", CStr(DataGrid1(rn, cn)))
|
1
2
3
4
5
6
7
8
| | DataGridCell c = dataGrid1.CurrentCell;
int rn = c.RowNumber;
Console.WriteLine("選択されているセルの行:{0}", rn);
int cn = c.ColumnNumber;
Console.WriteLine("選択されているセルの列:{0}", cn);
Console.WriteLine("選択されているセルの値:{0}", dataGrid1[rn, cn].ToString());
|
次に現在のセルを設定する例として、現在のセルを(0,0)にする例を示します。
1
2
| | DataGrid1.CurrentCell = New DataGridCell(0, 0)
|
1
2
| | DataGrid1.CurrentCell = new DataGridCell(0, 0);
|
DataGridの一番下の新しい行(*行)が表示されないようにする †
DataGridの一番下の新しい行(*行)が表示されないようにするには、新しい行の追加を禁止すればよいわけです。
DataGridにおいて新しい行の追加、編集、削除をすべて禁止するには、DataGrid.ReadOnlyプロパティをTrueにします。
1
| | DataGrid1.ReadOnly = True
|
1
| | DataGrid1.ReadOnly = true;
|
DataGrid.ReadOnlyプロパティをTrueにすると、追加、編集、削除のすべてが禁止されてしまいます。追加のみを禁止にしたいときには、DataViewクラスのAllowNewプロパティをFalseにします。
次に新しい行の追加のみを禁止する例を示します。
1
2
3
4
5
6
7
8
9
10
| | Dim cm As CurrencyManager
cm = CType(Me.BindingContext(DataGrid1.DataSource), _
CurrencyManager)
Dim dv As DataView = CType(cm.List, DataView)
dv.AllowNew = False
|
1
2
3
4
5
6
7
8
9
| | CurrencyManager cm =
(CurrencyManager) this.BindingContext[DataGrid1.DataSource];
DataView dv = (DataView) cm.List;
dv.AllowNew = false;
|
ヘルプ(ms-help://MS.VSCC/MS.MSDNVS.1041/cpref/html/
frlrfsystemwindowsformscurrencymanagerclasslisttopic.htm)では、次のようにDataGridコントロールのNavigateイベントでAllowNewプロパティをFalseにする例が紹介されています。Navigateイベントはユーザーが新しいテーブルに移動すると発生します。
1
2
3
4
5
6
7
8
9
10
| | Private Sub Grid_Navigate(sender As Object, e As NavigateEventArgs)
If e.Forward Then
Dim ds As DataSet = CType(grid.DataSource, DataSet)
Dim cm As CurrencyManager = _
CType(BindingContext(ds,"Customers.CustOrders"), CurrencyManager)
Dim dv As DataView = CType(cm.List, DataView)
dv.AllowNew = false
End If
End Sub
|
1
2
3
4
5
6
7
8
9
10
11
12
| | private void Grid_Navigate(object sender, NavigateEventArgs e)
{
if (e.Forward )
{
DataSet ds = (DataSet) grid.DataSource;
CurrencyManager cm =
(CurrencyManager)BindingContext[ds,"Customers.CustOrders"];
DataView dv = (DataView) cm.List;
dv.AllowNew = false;
}
}
|
コメント †