2009-04-01 15 views

答えて

35

変更後、任意のコンパイルエラーを修正し、ユーザーコントロールの代わりのフォームから継承する形。

+1

この同じ問題を自分自身で解決しながら、この回答が見つかりました。すごく簡単ですね。 –

+0

VB.NETでどうすればいいですか?このフォームは単に 'Public Class TimeSheetGrid'として宣言され、明示的な' Inherits'はありません。 – ProfK

+0

Visual Studio 2012(少なくとも)、または私が試した比較的シンプルなフォームでは、これを行うだけで使用可能なコードが作成されますが、VSデザイナーでコントロールを開くことはできません。エラーはありませんが、デザイナーを開くと、ファイルダイアログエレメント/ etcの場合と同様に、すべてのコントロール要素のリストが表示されます。コントロールレイアウトは表示されません。誰かがそれを修正する方法を知っているなら、教えてください! –

8

コントロールでフォームを埋め込む方法もあります。ここでVBのコードです:

Public Shared Sub ShowFormInControl(ByRef ctl As Control, ByRef frm As Form) 
    If ctl IsNot Nothing AndAlso frm IsNot Nothing Then 
     frm.TopLevel = False 
     frm.FormBorderStyle = FormBorderStyle.None 
     frm.Dock = DockStyle.Fill 
     frm.Visible = True 
     ctl.Controls.Add(frm) 
    End If 
End Sub 

ので、私はSOに別のポストからこのコードを取得しましたと思うが、私はどこ覚えていないことこのコードスニペットであればごめんなさい!

+0

C#では同じことが明らかです。 – GWLlosa

+1

私はあなたがC#で動作するためにいくつかのものを変更しなければならないと思う、そうでなければコンパイラは怒っているでしょう... – Joey

0

これを行うべきではありませんが、今後はMEFをご覧ください。その中で(とりわけ)複合アプリケーションを構築するためのフレームワークは、あなたが達成しようとしているものかもしれません。

0

@Neil Barnwellの溶液を添加して使用しました。 私は手動で.vbprogファイルを編集し、「ユーザーコントロール」に、フォームの「サブタイプ」に変更:

<SubType>UserControl</SubType> 

これは、プロジェクトエクスプローラのアイコンは、ユーザーコントロールではなく、フォームとして表示することができます。

関連する問題