2016-12-14 5 views
1

ユーザーが別のタブページを選択しているときに3つのコントロールを3つのタブページに移動しようとしています。それらは、ツールチップコントロール、リッチテキストボックスコントロール、およびコンボボックスコントロールです。タブページ間でコントロールを移動する

リッチテキストボックスとコンボボックスには、選択したタブページに応じてプロパティの一部に新しい値が割り当てられます。ツールストリップは同じである必要がありますが、一般的なフォントスタイルのツールストリップのメソッドがリッチテキストボックスに影響します。現在のタブページでのみ表示されます。

コンボボックスの表示値を変更すると、現在のタブページのrichtextboxにtextプロパティの新しい値が割り当てられるため、3つのコンボボックスや50個のリッチテキストボックスをすべての機会に作成したくありません。 。そのコンボボックスの表示項目を変更するか、またはタブページを変更することで、イベントを発生させる前に、それらのセットを1つだけ作成して、そのタイプの文字列コレクションの値を保持したいとします。

私は私には不合理なようだその時、のためのコントロールを作成することを示唆している。この http://www.vbforums.com/showthread.php?478602-2005-Move-controls-From-One-Tab-Page-To-Another ...

を読む前に私の現在の状況は、私はコントロールがデザイナーを通じてtabpage1で表示していることであるこれをしなかったのでその後、私はこのような何かをしようとしたタブを変更するときに

Private Sub TabPage_Enter(sender As Object, e As EventArgs) Handles TabPage1.Enter, TabPage2.Enter, TabPage3.Enter 
    Select Case DirectCast(sender, TabPage).Name 

     Case "Tabpage1" 
      TabPage1.Controls.Add(RichTextBox1) 
      TabPage1.Controls.Add(ToolStrip1) 
      TabPage1.Controls.Add(ComboBox1) 

     Case "TabPage2" 
      TabPage2.Controls.Add(RichTextBox1) 
      TabPage2.Controls.Add(ToolStrip1) 
      TabPage2.Controls.Add(ComboBox1) 

     Case "TabPage3" 
      TabPage3.Controls.Add(RichTextBox1) 
      TabPage3.Controls.Add(ToolStrip1) 
      TabPage3.Controls.Add(ComboBox1) 

    End Select 
End Sub 

は今、コントロールがtabpage2とtabpage3に表示されますが、tabpage1は空のまま。フォームロードイベントでこれを実行しようとしました

TabPage1.Controls.Add(RichTextBox1) 
TabPage1.Controls.Add(ToolStrip1) 
TabPage1.Controls.Add(ComboBox1) 

しかし、ビューに戻ってもタブページ1は空のままです。私が何をしようとしているのか分かりませんが、このアプローチではデザイナーを使わず、サイズと場所を自分で処理するコードでのみコントロールを作成してください。主にコードを短く整理しておくための "正しい"方法がある場合はアドバイスをお願いします。 TIA。

ps.私はこれを書いていましたが、デザイナーで各タブページのコントロールを3つしか作成せず、コンボボックスの変更を文字列コレクションの方法で処理することができたことに気付きました。私はまだこれについて知りたいと思うので、私はまだこの質問をしています。

+2

CasePage文に "Tabpage1"に大文字の "P"を付けると、TabPage1の名前と一致する必要がありますか? –

+0

それはよく見られた、私はタイプミスを探していたが、私は1,2,3をソートすることに焦点を当てていたので、私は気づいていなかった:D – kokotas

+0

コントロールが今すぐ最初のタブに表示されますこの記事を作成する前に、私はtypoに気づいていませんでした):Pしかし、私は、タブページでコントロールを追加するときに、入力イベントがトリガするたびに正確に何が起こるのだろうかと思います。これはそれを行う方法ですか?私は自分のコードで進んでいる間に私が見つけ出すだろうと思う。しかし、より良い方法があれば、それを答えとして追加してください。あるいは、コントロールを継続的に追加することで何が起きるかについての有益な記事で答えてください。 TIA – kokotas

答えて

2

タブ間の進行に合わせてコントロールを移動するためのソリューションがあります コントロールは既に1回作成されているものとします。

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

    Try 

     Dim tabCtrl As TabControl = DirectCast(sender, TabControl) 
     Dim tabPageItem As TabPage = tabCtrl.SelectedTab 
     moveControl(MobileButton, tabPageItem) 

    Catch ex As Exception 

     MessageBox.Show(String.Concat("An error occurred:", ex.Message)) 

    End Try 

End Sub 

Private Sub moveControl(controlToMove As Control, newTab As TabPage) 

    Dim findButton() As Control = newTab.Controls.Find(controlToMove.Name, True) 

    If findButton.GetUpperBound(0) < 0 Then 

     controlToMove.Parent = newTab 

    End If 

End Sub 
+0

それはコントロールの本当の動きは、私が試していたものと比較して... pffありがとう、これは私が持っていた上記の問題を実際に解決しました。アンドリュー援助ありがとう! – kokotas

関連する問題