0

アプリケーション (VB.NET および Visual Studio 2010 Pro) を開発していますが、次の点についてサポートが必要です。

1)アイテム/製品はデータベースに保存され、これらのアイテムは特定のグループに保存されます。

2)フォームの読み込み時に、項目テーブル内のすべてのグループのリストを取得し、各グループ項目のボタンを作成する必要があります。これに加えて、各グループのタブを隣接するタブに追加する必要がありますコントロール。私はこれを行うことができましたが、ボタンを使用するのではなく、リスト ビューを使用しています。私の完璧な解決策は、ボタンを使用してこれを行うことができるでしょう。

3) タブとそれぞれのタブのボタンを作成した後、各タブにそれぞれのグループの下にリストされているアイテムをさらに配置する必要があります。ここでも、理想的な状況ではアイテムをボタンとして表示する必要がありますが、必要に応じてリスト ビューを表示します。

4) グループとアイテムのボタンが作成されたら、アプリケーションが実行されているセッションだけで永続的ではないにしても、インターフェイスの一部として保存する必要があるようにしたいと思います。(つまり、タブ ページがロードされるたびに再作成する必要はなく、アプリケーションが実行されるたびに 1 回だけ作成する必要があります。)

これは、DB からグループを取得し、タブを生成してリスト ビューをタブに追加するためのコードと共に、リスト ビューにデータを入力するためのコードです。

 Private Sub frmItemSearch_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    lstItemGroups.Clear()
    tbItemGroups.TabPages.Clear()
    If openConnection(SQLConnection6) Then

        Dim cmd2 As String = "select distinct itemgroup " & vbCrLf & _
                             "from stkitem" & vbCrLf & _
                             "where ItemGroup != ''" & vbCrLf & _
                             "order by ItemGroup asc"

        SQLCommand5 = New SqlClient.SqlCommand(cmd2, SQLConnection6)
        SQLReader6 = SQLCommand5.ExecuteReader

        While SQLReader6.Read
            lstItemGroups.Items.Add(SQLReader6.Item(0))
        End While

    End If
    Dim x, i, index As Integer
    x = lstItemGroups.Items.Count
    i = 0
    index = 0
    Dim NewTab As New TabPage()

    'MessageBox.Show(x)

    While i < x
        NewTab.Text = lstItemGroups.Items(i).Text
        tbItemGroups.TabPages.Insert(index, NewTab)
        i += 1
        index += 1
    End While

End Sub



 Private Sub lstItemGroups_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lstItemGroups.Click

    Dim lstMenuItems As New ListView()
    lstMenuItems.BackColor = Color.Blue
    lstMenuItems.Dock = DockStyle.Fill
    lstMenuItems.Items.Add("A")
    lstMenuItems.Items.Add("A")
    lstMenuItems.Items.Add("A")
    lstMenuItems.Items.Add("A")
    lstMenuItems.Items.Add("A")

    Dim index As Integer = lstItemGroups.SelectedIndices(0)
    tbItemGroups.SelectedIndex = index

    tbItemGroups.SelectedTab.Controls.Add(lstMenuItems)

End Sub

ここでの問題は、グループをクリックすると、それぞれのタブが選択されますが、リスト ビューがタブに追加されないことです。これが実現できれば、グループ リスト ビューでグループにデータを入力するのと同じように、そのグループのアイテムをデータに入力することができます。(私のコードでリスト ビューに追加された項目は、テスト用です。)

要約すると、

主な問題は、動的に生成されたタブにリスト ビューを追加する方法です。

リストビューの代わりにボタンを使用する解決策を手伝っていただければ、素晴らしいと思います。

前もって感謝します、

4

1 に答える 1

1

あなたはTabs間違ったものを追加していて、全体TabControlが不完全であるように仕向けControlsています。これを行う正しい方法は次のとおりです。

While i < x
    Dim NewTab As New TabPage() 'This has to be called as many times as tabs to include
    NewTab.Text = lstItemGroups.Items(i).Text
    tbItemGroups.TabPages.Insert(index, NewTab)
    i += 1
    index += 1
End While

この修正後、 のコードはlstItemGroups_Click正常に動作します。ただし、特定のタブ内でサイズ ( Width/ Height) と場所 ( Left/ )を指定せずにコントロールを追加していることに注意してください。Topこれらの問題を説明する必要があります。

于 2013-08-02T13:51:40.930 に答える