| タイトル | : ListViewの項目表示 |  
| 記事No | : 5613 |  
| 投稿日 | : 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 
 
 |