C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


■87268 / )  Re[2]: DataGridViewの編集モード移行
□投稿者/ big7_8 (2回)-(2018/05/02(Wed) 15:08:23)
big7_8 さんの Web サイト
No87255 (WebSurfer さん) に返信

WebSurfer さん

はじめまして、big7_8です。
即返ありがとうございます。

私もSQLの利用は考慮いたしました。ですが、オブジェクト指向のプログラム自体が初めてで
とてもそこまでは頭がついていきそうにありません。

それで、SQLについては将来の課題ということで・・・

せっかくのアドバイスすみません。


> アップされているコードを読む気力がないのでハズレだったらスミマセンが・・・

コードが読み難くて申し訳ありませんでした。VB.NETからコピーした
エディッター上では字下げされていたので、これでいいと思っておりましたが、
UPしたら、 字下げが消去されていました。しかし、時間がなかったので
そのままUPしてしまいました。後、コメントがないのも読み難い理由の一つかな
と思います。それで、再度、字下げ、コメントをつけて提示させて頂きます。


【サンプルデータ生成コード】
'構造体の宣言
Public Structure Jstock
   Public dteDate As Date
   Public N20O As Single
   Public N20H As Single
   Public N20L As Single
   Public N20C As Single
End Structure


Public Class Form1
   Inherits System.Windows.Forms.Form

   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     Dim js As Jstock
     FileOpen(1, "e:\data\test4.dat", OpenMode.Random, , , Len(js))

     'データ入力
     js.dteDate = #4/1/2014#
     js.N20O = 21657.87
     js.N20H = 21719.43
     js.N20L = 21591.39
     js.N20C = 21660.28
     FilePut(1, js, 1)
     js.dteDate = #4/2/2015#
     js.N20O = 21801.41
     js.N20H = 21917.35
     js.N20L = 21746.69
     js.N20C = 21778.74
     FilePut(1, js, 2)
     js.dteDate = #4/3/2016#
     js.N20O = 21801.41
     js.N20H = 21917.35
     js.N20L = 21746.69
     js.N20C = 21778.74
     FilePut(1, js, 3)
    js.dteDate = #4/4/2017#
    js.N20O = 21801.41
     js.N20H = 21917.35
    js.N20L = 21746.69
     js.N20C = 21778.74
     FilePut(1, js, 4)
     js.dteDate = #4/5/2018#
    js.N20O = 21801.41
     js.N20H = 21917.35
     js.N20L = 21746.69
    js.N20C = 21778.74
     FilePut(1, js, 5)

     'データ閲覧
     FileGet(1, js, 1)
    Trace.WriteLine(js.dteDate)
     Trace.WriteLine(js.N20O)
     Trace.WriteLine(js.N20H)
    Trace.WriteLine(js.N20L)
     Trace.WriteLine(js.N20C)
     FileGet(1, js, 2)
    Trace.WriteLine(js.dteDate)
     Trace.WriteLine(js.N20O)
     Trace.WriteLine(js.N20H)
    Trace.WriteLine(js.N20L)
     Trace.WriteLine(js.N20C)

     FileClose(1)
   End Sub
End Class


【本体コード】

Imports System
Imports System.Drawing
Imports System.Windows.Forms
Imports System.IO


Public Interface IDataGridViewEditingCell

End Interface

'構造体の宣言
Public Structure Jstock
   Public dteDate As Date
   Public N20O As Single
   Public N20H As Single
   Public N20L As Single
   Public N20C As Single
End Structure

'グローバル変数の宣言
Public Class Config
   Public Shared dteDate As Date
   Public Shared N20O As Single
   Public Shared N20H As Single
   Public Shared N20L As Single
   Public Shared N20C As Single

   Public Shared RN1 As Integer
   Public Shared RNX As Integer
   Public Shared COUNT As Integer
End Class


Public Class Form1
   Inherits System.Windows.Forms.Form

   Implements IDataGridViewEditingCell

   Shared dgv As DataGridView

   Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

     Dim js As Jstock
     FileOpen(1, "e:\data\test4.dat", OpenMode.Random, , , Len(js))
     '最大レコード数
     Config.RN1 = LOF(1) / Len(js)
     '初期表示を最大レコードに設定
     Config.RNX = Config.RN1


     'RnxCheck()でENDを選択したとき、LoopをExit
     Do While Config.RNX > 0
       DataGet()
       '初回のみ列を定義
       If Config.COUNT = 0 Then InitializeDGV()
       '行の初期化
       dgv.Rows.Clear()
       '行を定義及びセルのデータ引き渡し
       FillDGV()

       'DataGridViewの表示
       Me.Show()
       dgv.Select()
       dgv.CurrentCell = dgv(0, 4)
       dgv.BeginEdit(True)
       MessageBox.Show("a1")
       '参照レコードナンバーの変更
       RnxCheck()
     Loop

     '終了(RnxCheck()でENDを選択)
     If Config.RNX = 0 Then
       FileClose(1)
       Application.Exit()
     End If

   End Sub

   'コンストラクタ-
   Public Sub New()
     dgv = New DataGridView()
     dgv.Dock = DockStyle.Fill
     dgv.AllowUserToAddRows = False
     dgv.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells
     Me.Controls.Add(dgv)
   End Sub


   '参照レコードナンバーの変更
   Public Sub RnxCheck()
     Dim GetString As String = dgv.CurrentCell.Value

     Select Case GetString
       Case ""

       Case "<<"
         Config.RNX = Config.RNX - 100
         If Config.RNX < 1 Then Config.RNX = 1
       Case "<"
         Config.RNX = Config.RNX - 1
         If Config.RNX < 1 Then Config.RNX = 1
       Case "END"
         Config.RNX = 0
       Case ">"
         Config.RNX = Config.RNX + 1
         If Config.RNX > Config.RN1 Then Config.RNX = Config.RN1
       Case ">>"
         Config.RNX = Config.RNX + 100
         If Config.RNX > Config.RN1 Then Config.RNX = Config.RN1
       Case Else
         Config.RNX = Config.RN1 '仮
     End Select

   End Sub


   '列を定義
   Sub InitializeDGV()
     Dim column1 As New DataGridViewTextBoxColumn
     column1.HeaderText = " 銘柄 "
     dgv.Columns.Add(column1)

     Dim column2 As New DataGridViewTextBoxColumn
     column2.HeaderText = "OPEN"
     dgv.Columns.Add(column2)

     Dim column3 As New DataGridViewTextBoxColumn
     column3.HeaderText = "HIGH"
     dgv.Columns.Add(column3)

     Dim column4 As New DataGridViewTextBoxColumn
     column4.HeaderText = "LOW"
     dgv.Columns.Add(column4)

     Dim column5 As New DataGridViewTextBoxColumn
     column5.HeaderText = "CLOSE"
     dgv.Columns.Add(column5)

     Config.COUNT = 1

   End Sub

   '行を定義
   Sub FillDGV()
     dgv.Rows.Add("日付等", Config.dteDate, Config.RNX)
     dgv.Rows.Add()
     dgv.Rows.Add("日経平均", Config.N20O, Config.N20H, Config.N20L, Config.N20C)
     dgv.Rows.Add()
     dgv.Rows.Add("<<", "<", "END", ">", ">>")
   End Sub


   Sub DataGet()
     Dim js As Jstock

     FileGet(1, js, Config.RNX)
     Config.dteDate = js.dteDate
     Config.N20O = js.N20O
     Config.N20H = js.N20H
     Config.N20L = js.N20L
     Config.N20C = js.N20C
   End Sub

End Class

返信 編集キー/


管理者用

- Child Tree -