0

これは数週間私を殺しています。私が作成したブラウザがあり、TabControl を使用しています。TabPage「+」をクリックするたびに、新しいものが追加されます。これらの各 TabPages には userControls (WebBrowser、アドレス バー、戻るボタン、進むボタンなど) があります。ユーザーが Form1 のサイズを変更すると、すべての userControls が TabPage/Form1 に収まるようにします。

基本的に、userControls をフォームの現在のサイズに合わせたいのですが、わかりません。現在、TabControls は機能していますが、これは単に Anchor プロパティを使用して行われました。このオプションは、UserControls では使用できません。プログラムで手動で固定しましたが、サイズが変更されません。小さいサイズの真ん中にすべてを貼り付けるだけです....

コードは次のとおりです。 これがどのように見えるかです。

'これはフォームのコードです

System.IO パブリック クラス Form1 をインポートします。

'The Global Variables
Dim theControls1 As New theControls


Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    TabPage1.Controls.Add(theControls1)
    theControls1.theBrowser.Navigate("http://google.com")
End Sub

Private Sub Form1_SizeChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.SizeChanged



    'For Auto Sizing theControls to Form1

    theControls1.Width = TabControl1.Width - 8
    theControls1.Height = TabControl1.Height - 25
End Sub

Private Sub TabControl1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TabControl1.Click

    'Add new tab with the same controls.
    Dim theNewTab As New TabPage
    Dim theOtherControls As New theControls
    Dim theTabCounter As Integer = TabControl1.TabPages.Count

    theOtherControls.AutoSize = True
    theOtherControls.Width = TabControl1.Width
    theOtherControls.Height = TabControl1.Height

    theOtherControls.Anchor = AnchorStyles.Right & AnchorStyles.Left & AnchorStyles.Bottom & AnchorStyles.Top



    Dim theSelectedTab As String = TabControl1.SelectedTab.Text

    If theSelectedTab = "+" Then
        TabControl1.TabPages.Insert(theTabCounter - 1, theNewTab)
        theNewTab.Controls.Add(theOtherControls)
        theControls1.theBrowser.Navigate("http://google.com")
        theOtherControls.theBrowser.Navigate("http://google.com")
        TabControl1.SelectTab(theTabCounter - 1)
    End If
End Sub

クラス終了

'これはユーザーコントロールのコードです

Imports System.IO Imports System.Data.OleDb パブリック クラス theControls

'The History Database Connection String 
Dim theHistoryDatabaseConn As New OleDbConnection

Private Sub ComboBox1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles theAddressBar.KeyDown
    'Navigate to Webpage stated in theAddressBar
    If e.KeyValue = Keys.Enter Then
        theBrowser.Navigate(theAddressBar.Text)
        e.SuppressKeyPress = True
    End If
End Sub

Private Sub goForward_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles goForward.Click
    theBrowser.GoForward()
End Sub

Private Sub goBack_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles goBack.Click
    theBrowser.GoBack()
End Sub

Private Sub theBrowser_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles theBrowser.DocumentCompleted

    'Set Tab Text to current web page and Address Bar
    Form1.TabControl1.SelectedTab.Text = theBrowser.Url.Host.ToString
    Me.theAddressBar.Text = Me.theBrowser.Url.AbsoluteUri.ToString

    'Read the History
    theHistoryDatabaseConn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Marc Wilson\Documents\Visual Studio 2010\Projects\myBrowser\myBrowser\bin\Debug\TheHistoryDB.accdb"
    theHistoryDatabaseConn.Open()


    'Populate theAddressBar with the contents from the History 
    theAddressBar.Items.Clear()
    Dim readTheHistory As String
    Dim getTheHistory As OleDbCommand
    readTheHistory = "SELECT [Host Name] FROM TheHistory"
    getTheHistory = New OleDbCommand(readTheHistory, theHistoryDatabaseConn)
    Dim theData As New OleDbDataAdapter(getTheHistory)
    Dim theTable As New DataTable("TheHistory")
    'theHistoryDatabaseConn.Open()
    theData.Fill(theTable)
    For Each row As DataRow In theTable.Rows
        theAddressBar.Items.Add(row.Item("Host Name"))
    Next




    'Writes history to TheHistory Database (No Duplicates!)
    If theAddressBar.Items.Contains(theBrowser.Url.Host.ToString) Then
    Else

        'Write The History
        Dim writeTheHistory As OleDbCommand = New OleDbCommand("INSERT INTO TheHistory ([Host Name], [Absolute Path]) VALUES (theBrowser.URL.Host.ToString, theBrowser.URL.AbsoluteUri.ToString)", theHistoryDatabaseConn)
        writeTheHistory.Parameters.Add("@Host Name", OleDbType.Char, 255).Value = theBrowser.Url.Host.ToString
        writeTheHistory.Parameters.Add("@Absolute Path", OleDbType.Char, 255).Value = theBrowser.Url.AbsoluteUri.ToString

        theHistoryDatabaseConn.Close()


        theHistoryDatabaseConn.Open()
        writeTheHistory.ExecuteNonQuery()
        theHistoryDatabaseConn.Close()
    End If
    theHistoryDatabaseConn.Close()
End Sub

Private Sub theBrowser_ProgressChanged(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserProgressChangedEventArgs) Handles theBrowser.ProgressChanged

    'Status Bar Text
    Label1.Text = theBrowser.StatusText.ToString
End Sub

Private Sub theAddressBar_SelectedValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles theAddressBar.SelectedValueChanged
    Me.theBrowser.Navigate(Me.theAddressBar.Text)
End Sub

クラス終了

4

1 に答える 1