none
請問九宮格 外觀 要用工具箱的哪個元件做呢 RRS feed

  • 問題

  • 請問九宮格 外觀 要用工具箱的哪個元件做呢

     

    我連要拉 九宮格的FORM外觀都不知道 要用什麼物件

    請麻煩告訴我謝謝

     

    我要做九宮格 然後底下有個 上下左右 讓我可以移動 數字排成一個完整的12345678的數字

    類似遊戲的牌圖形 只是 這是數字

     我不要用buton 做成九個格子 有其他方式嗎?

     

    2008年12月24日 上午 03:47

解答

  • tablelayoutpanel 做成 3x3 , 塞滿 dock=fill 的 label
    記住一個 focus 中的 label,
    然後按下 button 時, 用
    tablelayoutpanel 調整每個 label 的 row,column 即可
    2008年12月24日 下午 02:06

所有回覆

  • 先說明這九宮格的作用吧...

    不然直接放張背景圖或拉九個正型的Button在Form裡就是九宮格的樣子了

     

    2008年12月24日 上午 05:24
  •  

    我要做九宮格 然後底下有個 上下左右 讓我可以移動 數字排成一個完整的12345678的數字

    類似遊戲的牌圖形 只是 這是數字

     我不要用buton 做成九個格子 有其他方式嗎?

     

    2008年12月24日 上午 08:59
  • tablelayoutpanel 做成 3x3 , 塞滿 dock=fill 的 label
    記住一個 focus 中的 label,
    然後按下 button 時, 用
    tablelayoutpanel 調整每個 label 的 row,column 即可
    2008年12月24日 下午 02:06
  • 謝謝你的回答

    但是我不會用那個物件 我用成3*3 了

    但是我不知道怎們把值 放到每個 格子裡面

    程式要怎們寫呢

     

    我換個比較簡單的方式就是直接 用button

    妳那個我不會用 太難了

    可以教我 怎們把直放到 每一個格子裡面嗎?
    2008年12月25日 上午 08:52
  • 我用 vb2005 做的一個小範例, 你看合不合用,
    開一個 windows application,
    form 上放一個 3x3 的 tablelayoutpanel , name 設為 tlp,
    4 個 button , name 分別為 btnUp, btnDown, btnLeft, btnRight , 調整上下左右用,

    把以下的 code 整個貼進 form 裡頭試試吧,

    Public Class Form1

        Dim lbl(7) As Label
        Dim curPos As Point
        Dim rc As New Rectangle(0, 0, 3, 3)

        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            curPos = New Point(1, 1)
            For i As Integer = 0 To 7
                lbl(i) = New Label
                With lbl(i)
                    .Font = New Font(Me.Font.FontFamily, 24, FontStyle.Bold, GraphicsUnit.Pixel)
                    .AutoSize = False
                    .Dock = DockStyle.Fill
                    .TextAlign = ContentAlignment.MiddleCenter
                    .BorderStyle = BorderStyle.FixedSingle
                    .Text = i.ToString
                    .Margin = New Padding(0)
                End With
                Dim idx As Integer = i
                If i >= 4 Then idx += 1
                Me.tlp.Controls.Add(lbl(i), idx Mod 3, idx \ 3)
            Next
        End Sub

        Private Sub btnUp_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
            Handles btnUp.Click, btnDown.Click, btnLeft.Click, btnRight.Click

            Dim btn As Button = sender
            Dim newpos As Point = curPos
            Select Case btn.Name
                Case btnUp.Name
                    newpos.Y -= 1
                Case btnDown.Name
                    newpos.Y += 1
                Case btnLeft.Name
                    newpos.X -= 1
                Case btnRight.Name
                    newpos.X += 1
            End Select
            shiftLabel(newpos)
        End Sub

        Private Sub shiftLabel(ByVal newpos As Point)
            If rc.Contains(newpos) = False Then Exit Sub
            Dim l As Label = Me.tlp.GetControlFromPosition(newpos.X, newpos.Y)
            Me.tlp.SetCellPosition(l, New TableLayoutPanelCellPosition(curPos.X, curPos.Y))
            curPos = newpos
        End Sub

    End Class


    2008年12月27日 上午 11:16