
No.1ベストアンサー
- 回答日時:
お世話になります。
DataTable 等をバインドしているのであれば、
DataTable.Select("条件", "ソートする列") の
一番最後の行オブジェクトを取得すれば最大値がとれるはずです。
FlexGrid を使ったのが初めてなので効率があまりよくないかもしれないですが
バインドしていない方は、For 文で FlexGrid の行をがーっとまわして
最大値を取得しています。
以下のコードは、Form10 を作成して、デザイナでは何も手を加えず
Load のイベントですべてのコントロールやイベントの設定を行っています。
各 TabPage に存在する FlexGrid を ダブルクリックすると
最大値をメッセージ表示します。
Public Class Form10
Private Sub Form10_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Controls.Clear()
Dim tab As TabControl = New TabControl()
tab.TabPages.Clear()
tab.Dock = DockStyle.Fill
Me.Controls.Add(tab)
'' データバインドする場合
Dim tabPage1 As TabPage = New TabPage("DataBind")
Dim flex1 As C1.Win.C1FlexGrid.C1FlexGrid = New C1.Win.C1FlexGrid.C1FlexGrid()
flex1.Dock = DockStyle.Fill
' Data Bind
flex1.DataSource = Me.CreateData()
' Double Click した時のイベントを登録
AddHandler flex1.DoubleClick, AddressOf flex1_DoubleClick
tabPage1.Controls.Add(flex1)
tab.TabPages.Add(tabpage1)
'' データバインドしない場合
Dim tabPage2 As TabPage = New TabPage("not DataBind")
Dim flex2 As C1.Win.C1FlexGrid.C1FlexGrid = New C1.Win.C1FlexGrid.C1FlexGrid()
flex2.Dock = DockStyle.Fill
' not Data Bind
Dim dt As DataTable = Me.CreateData()
flex2.Item(0, 1) = dt.Columns(0).ColumnName
flex2.Cols.Item(1).Name = dt.Columns(0).ColumnName
flex2.Cols.Item(1).DataType = GetType(Integer)
For index As Integer = 0 To dt.Rows.Count - 1
flex2.Item(index + 1, 1) = dt.Rows(index)(0)
Next
' Double Click した時のイベントを登録
AddHandler flex2.DoubleClick, AddressOf flex2_DoubleClick
tabPage2.Controls.Add(flex2)
tab.TabPages.Add(tabpage2)
End Sub
'' データバインドしている場合の最大値をメッセージ表示
Private Sub flex1_DoubleClick(ByVal sender As Object, ByVal e As EventArgs)
Dim flex As C1.Win.C1FlexGrid.C1FlexGrid = DirectCast(sender, C1.Win.C1FlexGrid.C1FlexGrid)
Dim dt As DataTable = DirectCast(flex.DataSource, DataTable)
Dim maxRow As DataRow = dt.Select("", "Column1")(dt.Rows.Count - 1)
MessageBox.Show(maxRow("Column1").ToString())
End Sub
'' データバインドしていない場合の最大値をメッセージ表示
Private Sub flex2_DoubleClick(ByVal sender As Object, ByVal e As EventArgs)
Dim flex As C1.Win.C1FlexGrid.C1FlexGrid = DirectCast(sender, C1.Win.C1FlexGrid.C1FlexGrid)
Dim max As Integer = 0
For index As Integer = 1 To flex.Rows.Count - 1
Dim value As Integer = CInt(flex.Item(index, 1))
If max < value Then max = value
Next
MessageBox.Show(max.ToString())
End Sub
Private Function CreateData() As DataTable
Dim dt As DataTable = New DataTable("test")
dt.Columns.Add("Column1", GetType(Integer))
dt.Rows.Add(1)
dt.Rows.Add(12)
dt.Rows.Add(15)
dt.Rows.Add(30)
dt.Rows.Add(21)
Return dt
End Function
End Class
この回答へのお礼
お礼日時:2007/09/11 16:16
お返事が遅れまして大変申し訳ありません。
教えていただいたコードを参考に、目的の動作を完成
させることができました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Cellsのかっこの中はどっちが行...
-
Worksheets メソッドは失敗しま...
-
DataGridViewに空白がある場合...
-
Excelで、あるセルの値に応じて...
-
vba 2つの条件が一致したら...
-
VBA 何かしら文字が入っていたら
-
【VBA】2つのシートの値を比較...
-
B列の最終行までA列をオート...
-
IIF関数の使い方
-
VBAでのリスト不一致抽出について
-
Changeイベントでの複数セルの...
-
エクセル 2つの表の並べ替え
-
VBScriptでfindを使うには??
-
マクロ 最終列をコピーして最終...
-
エクセルVBA、特定条件で行を追加
-
VBAで指定範囲内の空白セルを左...
-
データグリッドビューの一番最...
-
VBAのFind関数で結合セルを検索...
-
VBA とびとびの列を結合させる
-
VBAコンボボックスで選択した値...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelで、あるセルの値に応じて...
-
Worksheets メソッドは失敗しま...
-
Cellsのかっこの中はどっちが行...
-
vba 2つの条件が一致したら...
-
【VBA】2つのシートの値を比較...
-
B列の最終行までA列をオート...
-
IIF関数の使い方
-
URLのリンク切れをマクロを使っ...
-
VBAを使って検索したセルをコピ...
-
DataGridViewに空白がある場合...
-
VBA 何かしら文字が入っていたら
-
VBAのFind関数で結合セルを検索...
-
複数の列の値を結合して別の列...
-
VBAでのリスト不一致抽出について
-
データグリッドビューの一番最...
-
VBAで指定範囲内の空白セルを左...
-
rowsとcolsの意味
-
【Excel VBA】 B列に特定の文字...
-
VBAで、特定の文字より後を削除...
-
エクセル 2つの表の並べ替え
おすすめ情報