tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル ListViewの項目表示
投稿日: 2007/06/06(Wed) 20:07
投稿者hoido
いつもお世話になっております。
ListViewの使い方でどつぼにはまってしまい不具合から抜け出すことが出来なくなってしまったので
何とかお知恵をお貸しください。
作業内容としてはフォーム内に1ヶ月分のリストビューを作成しその中に詳細の項目を入力する作業
です。
現在のコードは
@1ヵ月分のリストビューを配置する
   Private Sub Balcony_Start()
        Dim f, No0 As Inte
ger
        Dim x, y As Integer
        Dim Type As String = "Ba"

        '週作成
        Fo
r WeekNo = 0 To 4
            LabelFree(0 + WeekNo) = New Label
            With LabelFree(0 + WeekNo)
          
      .Bounds = New Rectangle(New Point(0, 40 + WeekNo * 310), New Size(50, 290))
                .BorderStyle = Bor
derStyle.FixedSingle
                .Text = "DEMO"
            End With
            Me.Pnl_keikaku
.Controls.Add(LabelFree(0 + WeekNo))

            LabelFree(3 + WeekNo) = New Label
            With LabelFree
(3 + WeekNo)
                .Bounds = New Rectangle(New Point(50, 40 + WeekNo * 310), New Size(50, 290))
          
      .BorderStyle = BorderStyle.FixedSingle
            End With
            Me.Pnl_keikaku.Controls.Add(LabelFree(
3 + WeekNo))

            '日作成
            For d As Integer = 0 To 6
                x = (d - 1) * 400
+ 100
                y = WeekNo * 310
                If d = 0 Then GoTo skip

                '日付入力
用Label配置
                LabelDate(No0) = New Label
                With LabelDate(No0)
                  
  .Bounds = New Rectangle(New Point(x, 20 + y), New Size(400, 20))
                    .BorderStyle = BorderStyle.Fix
edSingle
                    .Name = "lbl_day_" & No0
                    .Text = DateAdd(DateIn
terval.Day, No0, StartDay).ToString("M/d")
                End With
                Me.Pnl_keikaku.Con
trols.Add(LabelDate(No0))

                '生産台数合計入力用Label配置
                LabelTotal(No0) =
New Label
                With LabelTotal(No0)
                    .Bounds = New Rectangle(New Point(x, 310 + y),
New Size(400, 20))
                    .BorderStyle = BorderStyle.FixedSingle
                    .Name = "
lbl_Total_" & No0
                End With
                Me.Pnl_keikaku.Controls.Add(LabelTotal(No0
))

                'ListView配置
                ListName(f) = New ListView
                With ListN
ame(f)
                    .Bounds = New Rectangle(New Point(x, 40 + y), New Size(400, 270))
                    .Borde
rStyle = BorderStyle.FixedSingle
                    .HeaderStyle = ColumnHeaderStyle.None
                  
  .Name = "lis_lis" & Type & "_" & No0
                End With

          
      'イベントプロシージャに登録
                Me.Pnl_keikaku.Controls.Add(ListName(f))
                Ad
dHandler ListName(f).MouseUp, AddressOf ListView_MouseUp

                GoTo NextStep

Skip:
  
              '日曜日の場合はここに来る
                LabelDate(No0) = New Label
                With LabelDate(No0
)
                    .Bounds = New Rectangle(New Point(50, 20 + y), New Size(50, 20))
                    .Borde
rStyle = BorderStyle.FixedSingle
                    .Name = "lbl_day_" & No0
                  
  .Text = DateAdd(DateInterval.Day, No0, StartDay).ToString("M/d")
                End With
          
      Me.Pnl_keikaku.Controls.Add(LabelDate(No0))

NextStep:
                f += 1
                No
0 += 1
            Next
        Next
    End Sub

以上長くなってしまって申し訳ありませんが1ヵ月分の
リストビュー及び日付入力用のラベルを配置しています。

A詳細項目の配置
        Dim i, L As Integer
  
      Dim Total As Long

        For L = 0 To 35                    Select Case L
                '日曜日は
とばす
                Case 0, 7, 14, 21, 28, 35
                    GoTo NextStep
            End Select


           'ListViewのフェッダー作成
            With ListName(L)
                If Update_F = True Then
          
          .Clear()
                End If
                .View = View.Details
                .FullRowSelect = T
rue
                .HeaderStyle = ColumnHeaderStyle.None
                .Columns.Add("DEMO1", 45, Horizo
ntalAlignment.Center)
                .Columns.Add("DEMO2", 50, HorizontalAlignment.Center)
                .C
olumns.Add("DEMO3", 100, HorizontalAlignment.Center)
            End With

            '詳細項目追加
処理
            Dim ItemNo As Integer = 0
            Dim S_day As Date
            Dim Select_Day As String = &qu
ot;lbl_day_" & L

            For y As Long = 0 To RET - 1
                S_day = B_edit(y).
seisan_day
                If S_day = Me.Pnl_keikaku.Controls(Select_Day).Text Then

                  
  '詳細項目の追加
                    With ListName(L)
                        .Items.Add(Format(B_edit(y).suetuk
e, "MM/dd"), ItemNo)
                        .Items(ItemNo).SubItems.Add(B_edit(y).type_code)
          
              .Items(ItemNo).SubItems.Add(B_edit(y).name)
                        ItemNo += 1
                  
  End With
                End If
            Next y
   NextStep:
        Next L
    End Sub


上が詳細項目を入力するコードです。
流れ的にはヘッダーの追加⇒B_edit(y)の構造体の中から日付ラベルと同じものだけリスト
ビュー内に配置
といった流れです。

問題はここからなのですが、初回起動時は正常に表示されます。
しかし表示
日付を変更しもう一度表示しようとすると値が正常に表示されません。

初回起動時は
 CALL Balcony_Start
  
CALL Balcony_add

 DEMO1  DEMO2  DEMO3
   5/1    Ba    DEMO
   5/1    Ba    DEMO
   5/1    Ba    DE
MO

2回目以降はリストビューはもう作成されているので日付だけ再描画し
 Update_FをTrueにし
 CALL Bal
cony_add
とすると一番左の行は表示されるのですが2行目以降が表示されません。
 DEMO1  DEMO2  DEMO3
   5/1    
Ba    DEMO
   5/1      
   5/1    
といった感じです。

ながながと申し訳ないのですがどうしてもこの
不具合から抜け出せません。
※もうはまってから2日目です。

何とかお知恵をお貸しください。m(__)m

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。