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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.5320 の関連記事表示

<< 0 >>
■5374  Re[2]: DataGridViewのColumnとRowのスクロールしたときの位置について
□投稿者/ まじん -(2006/08/08(Tue) 20:10:42)

    分類:[C#] 

    No5321に返信(まじんさんの記事)

    なんとか 完成しました

    Imports System.Windows.Forms
    Imports System.Drawing
    Public Class GridViewSP
    Inherits Windows.Forms.DataGridView
    Dim Pan As Panel
    Dim _HedSet() As String
    Dim FastSet As Boolean = False
    Dim _ColCoun As Integer = 30
    Dim _Lab(_ColCoun) As Label
    Dim _Set(_ColCoun) As Integer
    Dim _HedColor As Color = System.Drawing.SystemColors.Control

    Public Sub New()

    Pan = New Panel
    Console.WriteLine("new")
    Dim c As Integer
    Do
    _Lab(c) = New Label
    Pan.Controls.Add(_Lab(c))
    _Lab(c).Visible = False
    c += 1
    Loop Until c >= _ColCoun
    If HedSet Is Nothing Then Exit Sub

    End Sub
    Public Function HedLab() As ArrayList
    _colcoun = Me.columns.count - 1
    Dim l As Integer = 0
    Do
    _Set(l) = l
    l += 1
    Loop Until l >= _ColCoun + 1
    Dim Hed As New ArrayList
    Dim lab As New ArrayList
    For Each c As String In HedSet
    Dim labNo As Integer
    labNo = CInt(Mid(c, 1, 2))
    lab.Add(labNo)
    Dim co As Integer = CInt(Mid(c, 3, 2))
    If co > 1 Then
    For i As Integer = 0 To co - 2
    lab.Add(labNo + i + 1)
    Next
    End If
    Next
    For Each cc As Integer In _Set
    Dim ari As Integer = 0
    Dim ccc As Integer
    For Each ccc In lab
    If cc = ccc Then
    ari = 1
    Exit For
    End If
    Next
    If ari = 0 Then
    Hed.Add(cc)
    End If
    Next
    Return Hed
    End Function
    Public Property HedColor() As Color
    Get
    HedColor = _HedColor
    End Get
    Set(ByVal value As Color)
    _HedColor = value
    End Set
    End Property
    Public Property HedSet() As String()
    Get
    HedSet = _HedSet
    End Get
    Set(ByVal value As String()) 'ここは結合したい列を 結合したいところだけ 例えば2列目から4列分結合したいなら 4桁の文字列で”0204”というふうに入力
    _HedSet = value
    End Set
    End Property
    Public Sub HedSetting2()
    If HedSet Is Nothing Then Exit Sub
    If HedSet.Length < 1 Then
    Pan.Visible = False
    Exit Sub
    End If
    If FastSet = True Then Exit Sub

    If Me.Columns.Count > 0 Then
    If Not HedSet Is Nothing Then
    Pan.Visible = True

    Dim par As Control = Me.Parent
    par.Controls.Add(Pan)
    Pan.BringToFront()

    Dim len As Integer = HedSet.Length
    If len < 1 Then Exit Sub
    Me.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
    Dim fon As Font = Me.ColumnHeadersDefaultCellStyle.Font

    Dim f As Integer = 0

    With Pan
    .BorderStyle = Windows.Forms.BorderStyle.None
    .Top = Me.Top + 1
    .Left = Me.Left + Me.RowHeadersWidth
    .Width = Me.Width - Me.RowHeadersWidth - 17
    .Height = Me.ColumnHeadersHeight
    .Visible = True
    End With

    Dim ii As Integer = 0

    For Each c As String In HedSet

    Dim st As String = c
    Dim setHed As Integer = CInt(Mid(st, 1, 2))
    Dim setCou As Integer = CInt(Mid(st, 3, 2))
    Dim lef As Integer = 0
    Dim top As Integer = Me.Top
    Dim wid As Integer = 0
    Dim hig As Integer = Me.ColumnHeadersHeight
    lef = Me.RowHeadersWidth
    Dim lef2 As Integer = 0
    If setHed > 1 Then
    For i As Integer = 0 To setHed - 2
    lef2 = lef2 + Me.Columns(i).Width
    Next
    End If
    lef = lef + Me.Left
    Dim l As Integer = 0
    Do
    wid = wid + Me.Columns(setHed - 1 + l).Width
    l += 1
    Loop Until l >= setCou
    If Not _Lab Is Nothing Then
    With _Lab(ii)
    .AutoSize = False
    .Top = 0
    .Left = lef2
    .Tag = lef2
    .Width = wid
    .Height = hig
    .BorderStyle = Windows.Forms.BorderStyle.FixedSingle
    .BackColor = HedColor
    .Text = Me.Columns(setHed - 1).HeaderText
    .TextAlign = ContentAlignment.MiddleCenter
    .Font = fon
    .BringToFront()
    .Visible = True
    End With
    End If
    f += 1
    ii += 1
    Next
    For Each cc As Integer In HedLab()
    If cc > 0 Then
    Dim st As String = cc
    Dim setHed As Integer = cc
    Dim setCou As Integer = 1
    Dim lef As Integer = 0
    Dim top As Integer = Me.Top
    Dim wid As Integer = 0
    Dim hig As Integer = Me.ColumnHeadersHeight
    lef = Me.RowHeadersWidth
    Dim lef2 As Integer = 0
    If setHed > 1 Then
    For i As Integer = 0 To setHed - 2
    lef2 = lef2 + Me.Columns(i).Width
    Next
    End If
    lef = lef + Me.Left

    wid = Me.Columns(setHed).Width

    With _Lab(cc)
    .AutoSize = False
    .Top = 0
    .Left = lef2
    .Tag = lef2
    .Width = wid
    .Height = hig
    .BorderStyle = Windows.Forms.BorderStyle.FixedSingle
    .BackColor = HedColor
    .Text = Me.Columns(setHed - 1).HeaderText
    .TextAlign = ContentAlignment.MiddleCenter
    .Font = fon
    .BringToFront()
    .Visible = True
    End With
    End If
    Next
    End If
    End If
    End Sub

    Private Sub GridViewSP_Disposed(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Disposed
    If Not Pan Is Nothing Then Pan.Dispose()
    For Each l As Label In _Lab
    If Not l Is Nothing Then l.Dispose()
    Next
    End Sub

    Private Sub GridViewSP_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
    If FastSet = False Then
    HedSetting2()
    FastSet = True
    Me.Refresh()
    End If
    End Sub

    Private Sub GridViewSP_Scroll(ByVal sender As Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles Me.Scroll
    If _Lab Is Nothing Then Exit Sub
    Dim Shado As Object = Me.FirstDisplayedScrollingColumnHiddenWidth
    Dim NowInd As Object = Me.FirstDisplayedScrollingColumnIndex()
    Dim ShadWid As Integer
    If NowInd > 0 Then
    For i As Integer = 0 To NowInd - 1
    ShadWid = ShadWid + Me.Columns(i).Width
    Next
    End If
    ShadWid = ShadWid + Shado

    For Each c As Label In _Lab
    If Not c Is Nothing Then
    c.Left = CInt(c.Tag) - ShadWid
    End If
    Next
    End Sub
    End Class

記事No.5320 のレス /0過去ログ5より / 関連記事表示
削除チェック/

■5321  Re[1]: DataGridViewのColumnとRowのスクロールしたときの位置について
□投稿者/ まじん -(2006/08/06(Sun) 14:43:25)

    分類:[C#] 

    No5320に返信(まじんさんの記事)
    .FirstDisplayedScrollingColumnHiddenWidthと
    .FirstDisplayedScrollingColumnIndex()を組み合わせる事で 取得できることがわかりましたので 改良してみます。
記事No.5320 のレス /0過去ログ5より / 関連記事表示
削除チェック/

■5320  DataGridViewのColumnとRowのスクロールしたときの位置について
□投稿者/ まじん -(2006/08/06(Sun) 13:46:53)

    分類:[C#] 


    分類:[C#] 

    No5308で投稿させていただいた DataGridViewのヘッダーの結合で スクロールさせるとヘッダー部分が付いていかない事が分かりました

    スクロールさせた時のColumnやRowの位置関係が取得できれば改良できるかと考えたのですが その位置関係を取得する方法がわかりません
    御教授いただけないでしょうか?

親記事 /0過去ログ5より / 関連記事表示
削除チェック/

■5320  Re[14]: ブラウザとローカルコンポーネントの連携
□投稿者/ まどか -(2007/07/10(Tue) 15:10:04)
    > object タグの書式は、ActiveX コントロールを扱う場合と少し異なります。

    参考になります。m(_ _)m

    >>その方向が強いですが、マネージコントロールであれば開発ツールがVS2005で統一できるという利点もありますね。
    >
    > 統一てか、C# 等で書いたモジュールを ActiveX コントロールから素直に呼び出したいのであれば、開発ツールは必然的に VS2005 (VC8) になります。

    実体DLLはおいといて、
    その上っ面(ラッパ)が、マネージコントロール or ActiveX という認識でいました。
    なので、マネージコントロールの場合、実体DLLも含め全部VB.NETでできちゃうなぁと思ってましたが違うのでしょうか?

    > Atras で言うところの Update Panel みたいなものとの組み合わせではどうでしょうか?という意味です>非同期

    #参考になります。一応近未来バージョンですね。時期的につらいかも。
    これはイベント待機・受信にからむ実装方法のひとつの例ですよね?
    実体DLLが通信するのはサーバー常駐の別コンポーネントなのでWebサービス等にはできないです。
    #というか今気がつきましたが、ひどりさんはWebサーバーとの通信ということで書かれていますよね?
記事No.5135 のレス /過去ログ15より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -