2009-03-05 4 views
3

WinForms .Net 2.0アプリケーションでは、項目とその両方にラベルとテキストボックスの両方を持つToolStripMenuItemを使用してコンテキストメニューを作成します。私が話していることの例は、アクセステーブルに表示されます。コンテキストメニューには、「選択項目によるフィルタ」、「選択範囲を除外するフィルタ」、「フィルタの選択:」、「フィルタ:_ _ _ _ _ _ "この3番目のオプションは、本質的にラベルであり、単一項目のテキストボックスです。これは私がする方法を理解できないものです。TextBoxとLabelの両方でToolStripMenuItemを作成することはできますか?

私はこれを2つの別々の ToolStripMenuItemsで実装しても問題ありませんでした.TextStripMenuItems - テキスト用、テキストボックス付きの子です。しかし、これはAccessでの実装と同じように見栄えが良くないものではありません。

誰も私にこの方向性を向けることができますか?私はすべての私がテキストボックス自体のコンテキストメニューに関連しているように見えるので、検索に問題があります。ここで

答えて

2

はあなたのための答えです:

How to: Wrap a Windows Forms Control with ToolStripControlHost
ToolStripControlHost Class

そして、私が書いた短いデモ(私はすべてでそれをスタイリングしていないように留意して、それは恐ろしい見え負担):

(VB.netは、私がすることを好むように、そしてあなたが好まれた言語で指定されていませんでした)

Public Class ToolStripEntry 
    Inherits ToolStripControlHost 

    Public Sub New() 
     MyBase.New(New ControlPanel) 

    End Sub 

    Public ReadOnly Property ControlPanelControl() As ControlPanel 
     Get 
      Return CType(Me.Control, ControlPanel) 
     End Get 
    End Property 

End Class 


Public Class ControlPanel 
    Inherits Panel 

    Friend WithEvents txt As New TextBox //with events so you can just use the events 
    Friend WithEvents lbl As New Label //don think you can just do that in c#, but you get the idea 

    Public Sub New() 

     lbl.Anchor = AnchorStyles.Left Or AnchorStyles.Top Or AnchorStyles.Bottom 
     lbl.Text = "Test" 
     lbl.TextAlign = ContentAlignment.MiddleLeft 
     lbl.Size = New Size(30, Me.Height)   //think of somthing! 
     lbl.Location = New Point(0, 0) 
     lbl.Parent = Me 

     txt.Anchor = AnchorStyles.Left Or AnchorStyles.Right Or AnchorStyles.Top 
     txt.Location = New Point(lbl.Right, 0) 
     txt.Width = Me.Width - txt.Left 
     txt.Parent = Me 

    End Sub 

End Class 
+0

おかげでアンディ!まさに私が探していたもの。私は答えが文書の中にあると嫌い、私はそれを逃したばかりです。リンクと例をありがとう。 – Rob3C

関連する問題