- - PR -
ユーザコントロールについて(VB2005)
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-05-15 15:58
こんにちは。
SplitContainerと、その下にボタンを配置したユーザコントロールを作っています。 (SplitContainerの上には、TreeViewとDataGridViewが載っています) デザイン画面では、フォームに正しく配置されるのですが、 実行すると、SplitContainerがコントロール全体を覆ってしまい、その下にあるボタンが隠れてしまいます。 なぜこうなってしまうのかもわからない状態です。 どうしたらよいのでしょうか。 とろしくお願いします。 | ||||
|
投稿日時: 2007-05-15 16:50
こういうハナシかな:
| ||||
|
投稿日時: 2007-05-15 17:30
お返事ありがとうございます。
DockとかAnchorとかをいろいろ変えてみたのですが、 どうも違うようです。 なかなか説明が下手でわかりにくいと思うので、 画像をアップしてみました。 http://www.hanape.jp/1.jpg http://www.hanape.jp/2.jpg のように作って、 実行すると http://www.hanape.jp/3.jpg のようになってしまいます。 | ||||
|
投稿日時: 2007-05-15 18:00
諸農です。
デザインだけで試してみましたが再現しません。 ユーザーコントロールの初期化コードで何かしていませんか? _________________ 諸農和岳 Powered by Turbo Delphi & Microsoft Visual Studio 2005 十兵衛@わんくま同盟 http://blogs.wankuma.com/jubei/ | ||||
|
投稿日時: 2007-05-15 18:15
ん?タブコントロールの高さが足りない…?
でどうすか。 | ||||
|
投稿日時: 2007-05-15 18:29
ありがとうございます。
>tabControl1.TabPages[0].AutoScroll = true; やってみたのですが、だめでした。 Tabコントロールではなく、Panelの上に載せたり、 普通にフォームの上に貼り付けた場合は、正常です。 http://www.hanape.jp/4.jpg の、上はTabコントロールに載せた場合で、 下は、Panelに載せた場合です。 >ユーザーコントロールの初期化コードで何かしていませんか? Newは何も記述しておらず、 InitializeComponentでは、 デザイナによって書かれたコードのままです。 (下がそれなのですが、長くなってしまってすいません) TreeViewもGridViewも、継承したコントロールなのですが、 試しに、普通のTreeViewとGridViewでやっても同じ結果でした。 Tabコントロールの上にSplitContainerを載せると、なってしまうみたいなんです。 Private Sub InitializeComponent() Me.components = New System.ComponentModel.Container Me.Button1 = New System.Windows.Forms.Button Me.Button2 = New System.Windows.Forms.Button Me.SplitContainer1 = New System.Windows.Forms.SplitContainer Me.CtrEnqMakerGridView1 = New WadachiEnqLib.ctrEnqMakerGridView Me.CtrEnqMakerTreeView1 = New WadachiEnqLib.ctrEnqMakerTreeView Me.SplitContainer1.Panel1.SuspendLayout() Me.SplitContainer1.Panel2.SuspendLayout() Me.SplitContainer1.SuspendLayout() CType(Me.CtrEnqMakerGridView1, System.ComponentModel.ISupportInitialize).BeginInit() Me.SuspendLayout() ' 'Button1 ' Me.Button1.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles) Me.Button1.Font = New System.Drawing.Font("MS ゴシック", 12.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(128, Byte)) Me.Button1.Location = New System.Drawing.Point(16, 193) Me.Button1.Name = "Button1" Me.Button1.Size = New System.Drawing.Size(139, 27) Me.Button1.TabIndex = 1 Me.Button1.Text = "ページ追加(&P)" Me.Button1.UseVisualStyleBackColor = True ' 'Button2 ' Me.Button2.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.Button2.Font = New System.Drawing.Font("MS ゴシック", 12.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(128, Byte)) Me.Button2.Location = New System.Drawing.Point(258, 193) Me.Button2.Name = "Button2" Me.Button2.Size = New System.Drawing.Size(139, 27) Me.Button2.TabIndex = 2 Me.Button2.Text = "問題追加(&R)" Me.Button2.UseVisualStyleBackColor = True ' 'SplitContainer1 ' Me.SplitContainer1.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.SplitContainer1.Location = New System.Drawing.Point(3, 3) Me.SplitContainer1.Name = "SplitContainer1" ' 'SplitContainer1.Panel1 ' Me.SplitContainer1.Panel1.Controls.Add(Me.CtrEnqMakerTreeView1) ' 'SplitContainer1.Panel2 ' Me.SplitContainer1.Panel2.Controls.Add(Me.CtrEnqMakerGridView1) Me.SplitContainer1.Size = New System.Drawing.Size(405, 173) Me.SplitContainer1.SplitterDistance = 135 Me.SplitContainer1.TabIndex = 3 ' 'CtrEnqMakerGridView1 ' Me.CtrEnqMakerGridView1.AllowUserToAddRows = False Me.CtrEnqMakerGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize Me.CtrEnqMakerGridView1.Dock = System.Windows.Forms.DockStyle.Fill Me.CtrEnqMakerGridView1.Enq_Object = Nothing Me.CtrEnqMakerGridView1.Enq_Page = Nothing Me.CtrEnqMakerGridView1.Font = New System.Drawing.Font("MS ゴシック", 12.0!) Me.CtrEnqMakerGridView1.Location = New System.Drawing.Point(0, 0) Me.CtrEnqMakerGridView1.MultiSelect = False Me.CtrEnqMakerGridView1.Name = "CtrEnqMakerGridView1" Me.CtrEnqMakerGridView1.RowTemplate.Height = 21 Me.CtrEnqMakerGridView1.Size = New System.Drawing.Size(266, 173) Me.CtrEnqMakerGridView1.TabIndex = 0 ' 'CtrEnqMakerTreeView1 ' Me.CtrEnqMakerTreeView1.Dock = System.Windows.Forms.DockStyle.Fill Me.CtrEnqMakerTreeView1.Enq_Data = Nothing Me.CtrEnqMakerTreeView1.Enq_Grid = Nothing Me.CtrEnqMakerTreeView1.ImageIndex = 0 Me.CtrEnqMakerTreeView1.Location = New System.Drawing.Point(0, 0) Me.CtrEnqMakerTreeView1.Name = "CtrEnqMakerTreeView1" Me.CtrEnqMakerTreeView1.SelectedImageIndex = 0 Me.CtrEnqMakerTreeView1.Size = New System.Drawing.Size(135, 173) Me.CtrEnqMakerTreeView1.TabIndex = 0 ' 'ctrEnqMaker ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 12.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font Me.Controls.Add(Me.SplitContainer1) Me.Controls.Add(Me.Button1) Me.Controls.Add(Me.Button2) Me.Name = "ctrEnqMaker" Me.Size = New System.Drawing.Size(411, 230) Me.SplitContainer1.Panel1.ResumeLayout(False) Me.SplitContainer1.Panel2.ResumeLayout(False) Me.SplitContainer1.ResumeLayout(False) CType(Me.CtrEnqMakerGridView1, System.ComponentModel.ISupportInitialize).EndInit() Me.ResumeLayout(False) End Sub | ||||
|
投稿日時: 2007-05-15 19:29
諸農です。
lalupin4さんからも指摘がありますが、「4.jpg」の上下を比較するとユーザーコントロールのボタンを含めた高さよりもタブコントロールの高さが足りないように見受けられるのですが。 フォーム側のInitializeComponent()メソッド内のタブページのサイズ指定コードとユーザーコントロールのサイズ指定コードの値を比較してみてください。 あと、lalupin4さんからもありましたが、タブページのAutoScrollをtrueにセットすることでスクロールバーが出ませんか? 全く何もコードを書かないユーザーコントロールを作っても同じ現象ですか? _________________ 諸農和岳 Powered by Turbo Delphi & Microsoft Visual Studio 2005 十兵衛@わんくま同盟 http://blogs.wankuma.com/jubei/ | ||||
|
投稿日時: 2007-05-15 20:31
お返事ありがとうございます。
lalupin4さんからも指摘がありますが、「4.jpg」の上下を比較するとユーザーコントロールのボタンを含めた高さよりもタブコントロールの高さが足りないように見受けられるのですが。 >フォーム側のInitializeComponent()メソッド内のタブページのサイズ指定コードとユー>ザーコントロールのサイズ指定コードの値を比較してみてください。 >あと、lalupin4さんからもありましたが、 >タブページのAutoScrollをtrueにセットすることでスクロールバーが出ませんか? 元のユーザーコントロールを小さくしてみたりもしたのですが、同じでした。 スクロールバーも出ないです。 >全く何もコードを書かないユーザーコントロールを作っても同じ現象ですか? 全くコードを書かないユーザーコントロールを作って、やってもみたのですが、 やはりタブページの上に置いてしまうと同じ現象が起きてしまいます。 ユーザーコントロールの中にあるSplitContainerが、タブページにFillしているような感じになってしまいます。 |