- PR -

ユーザコントロールについて(VB2005)

投稿者投稿内容
えり
常連さん
会議室デビュー日: 2007/04/27
投稿数: 29
投稿日時: 2007-05-15 15:58
こんにちは。
SplitContainerと、その下にボタンを配置したユーザコントロールを作っています。
(SplitContainerの上には、TreeViewとDataGridViewが載っています)
デザイン画面では、フォームに正しく配置されるのですが、
実行すると、SplitContainerがコントロール全体を覆ってしまい、その下にあるボタンが隠れてしまいます。
なぜこうなってしまうのかもわからない状態です。
どうしたらよいのでしょうか。
とろしくお願いします。
lalupin4
大ベテラン
会議室デビュー日: 2004/07/26
投稿数: 163
投稿日時: 2007-05-15 16:50
 こういうハナシかな:
コード:
splitContainer1.Dock = DockStyle.Fill;
↓
splitContainer1.Dock = DockStyle.Top;

えり
常連さん
会議室デビュー日: 2007/04/27
投稿数: 29
投稿日時: 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
のようになってしまいます。
Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2007-05-15 18:00
諸農です。

引用:

DockとかAnchorとかをいろいろ変えてみたのですが、
どうも違うようです。



デザインだけで試してみましたが再現しません。
ユーザーコントロールの初期化コードで何かしていませんか?

_________________
諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005

十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/
lalupin4
大ベテラン
会議室デビュー日: 2004/07/26
投稿数: 163
投稿日時: 2007-05-15 18:15
 ん?タブコントロールの高さが足りない…?
コード:
tabControl1.TabPages[0].AutoScroll = true;


でどうすか。
えり
常連さん
会議室デビュー日: 2007/04/27
投稿数: 29
投稿日時: 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
Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2007-05-15 19:29
諸農です。

引用:

普通にフォームの上に貼り付けた場合は、正常です。
http://www.hanape.jp/4.jpg
の、上はTabコントロールに載せた場合で、
下は、Panelに載せた場合です。



lalupin4さんからも指摘がありますが、「4.jpg」の上下を比較するとユーザーコントロールのボタンを含めた高さよりもタブコントロールの高さが足りないように見受けられるのですが。

フォーム側のInitializeComponent()メソッド内のタブページのサイズ指定コードとユーザーコントロールのサイズ指定コードの値を比較してみてください。
あと、lalupin4さんからもありましたが、タブページのAutoScrollをtrueにセットすることでスクロールバーが出ませんか?

全く何もコードを書かないユーザーコントロールを作っても同じ現象ですか?



_________________
諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005

十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/
えり
常連さん
会議室デビュー日: 2007/04/27
投稿数: 29
投稿日時: 2007-05-15 20:31
お返事ありがとうございます。

lalupin4さんからも指摘がありますが、「4.jpg」の上下を比較するとユーザーコントロールのボタンを含めた高さよりもタブコントロールの高さが足りないように見受けられるのですが。

>フォーム側のInitializeComponent()メソッド内のタブページのサイズ指定コードとユー>ザーコントロールのサイズ指定コードの値を比較してみてください。
>あと、lalupin4さんからもありましたが、
>タブページのAutoScrollをtrueにセットすることでスクロールバーが出ませんか?
元のユーザーコントロールを小さくしてみたりもしたのですが、同じでした。
スクロールバーも出ないです。

>全く何もコードを書かないユーザーコントロールを作っても同じ現象ですか?
全くコードを書かないユーザーコントロールを作って、やってもみたのですが、
やはりタブページの上に置いてしまうと同じ現象が起きてしまいます。
ユーザーコントロールの中にあるSplitContainerが、タブページにFillしているような感じになってしまいます。


スキルアップ/キャリアアップ(JOB@IT)