2013-03-27 16 views
0

我正在使用Weifen Lous的Dock Panel Suite。在我的代碼中,我爲我的文本編輯器創建了一個新的窗體實例,我停靠在我的應用程序的主窗體中。 MDI親子游戲。每次我重新初始化包含我的表單實例的變量時,都會遇到問題。表單的新實例覆蓋現有的表單變量聲明

這裏是我的代碼:

Private Sub AddTabPage() 

     Try 

      Editor = New frmEditor 
      Editor.Text = "New Tab" 
      Editor.Show(dpMain, DockState.Document) 

     Catch ex As Exception 

      MessageBox.Show(ex.Message, "Message", MessageBoxButtons.OK, MessageBoxIcon.Information) 

     End Try 

    End Sub 

正如你所看到的,上面的代碼被稱爲每一個用戶決定在我的文本編輯器添加標籤的時間。代碼所做的是創建一個停靠在我的應用程序主窗體中的窗體的新實例。

現在的問題是在這裏:

Private Sub Editor_ColorToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Editor_ColorToolStripMenuItem.Click 

    Dim CR As New ColorDialog 
    CR.ShowDialog() 
    CType(Editor.rtbCode, RichTextBox).SelectionColor = CR.Color 

End Sub 

在上面的工具條中的菜單項,我使用我打電話創建表單變量AddTabPage子程序:(CType(Editor...)。如果只有一個表單,這工作正常。但是當我嘗試添加另一個選項卡時;即再次調用AddTabPage,它重新初始化Editor表單變量,我不能再改變寫在先前創建的選項卡/表單(第一個選項卡/表單)上的文本的顏色。我認爲這是因爲每次添加表單時都會重新初始化Editor。創建的上一個選項卡/表單正在丟失其數據/控件(第一個選項卡/表單)?我不確定,但會發生類似情況。

現在,我想要實現的是每次創建選項卡/表單時,我仍然可以更改每個要創建的選項卡上寫入的文本的顏色。我將如何防止數據/被覆蓋/不見了之前的形式的控制(對不起,我不知道正確的長期使用。)

我可以通過聲明的預定數量解決問題然後使用switch語句來確定當前的焦點形式。但我認爲有更好的方法來做到這一點。我想在我的停靠面板中擁有無限的選項卡/表單。

回答

0

沒關係。我解決了這個問題。

要訪問我想停靠的形式,我用這個代碼:

dpMain.ActiveDocument.DockHandler.Form.Controls.Item(0) 

這樣的話,我不會不得不明確使用Editor

編輯:

Item(0)是形式的RichTextBox的索引。