現在、Panelを配置したユーザーコントロールを作成しています。
そのユーザーコントロールをFormに配置した後、
Formのデザイナからユーザーコントロールの中のPanelをいじる(高さ、幅を変えたりなど)ことは出来ないでしょうか?
調べては見ているのですが、なかなか目ぼしい情報が得られず、
かつ右も左も分からないような状態です。
もしできる(できそう)なら、教えていただきたいと思います。
どうかよろしくお願いします。
UserControle.Panel.Width(Hight)="200"
とかでできないんだっけ?
#サイズ変更とかするなら、ユーザコントロールにしない方がいい気がする
>UserControle.Panel.Width(Hight)="200"
のような書き方は確かに出来ます。
が、意図していることはコードでサイズをいじるのではなく、
Formのデザイン画面上でユーザーコントロール内のPanelのサイズを、マウスを用いて直接変更することなのです。
願わくば、ユーザーコントロール内のPanelの中にTextBoxを追加したり出来たらいいと思っています。
>#サイズ変更とかするなら、ユーザコントロールにしない方がいい気がする
実は今回、クラスライブラリとして製造中なのです。
将来的に使う共通部品として作っているので、ユーザーコントロールでなくてはならないのです。
なのでどうしてもForm上に置いた後、中にあるPanelのサイズを直接いじれる必要があるのですが、
やはり不可能なのでしょうか?
> 将来的に使う共通部品として作っているので、ユーザーコントロールでなくてはならないのです。
「なくてはならない」理由はなんでしょうか。
View部分は分離して動作部分だけを別のクラスにして,
ユーザーコントロールにしている部分の動作は,そのクラスを呼び出すことで実現するのでは,いけないのでしょうか。
ユーザーコントロールにするのであれば,パネルのサイズなどという実装をさらけ出したような表現ではなく,
「○○の大きさ」のような,実装とは直接関係しないようなプロパティを用意し,そのプロパティの設定時にコントロール内部でパネルのサイズ変更を行うようにしてはどうでしょうか。
ユーザーコントロールも普通のクラスと考えて、
Public Class myContlor
Public Property PanelHeight() As Integer
Get
Return Me.Panel1.Height
End Get
Set(ByVal Value As Integer)
Me.Panel1.Height = Value
End Set
End Property
End Class
等としておけば、フォームに貼り付けたユーザーコントロールの
プロパティにPanel1Heightが表示されるのでそれで変更したら良いと
思うのだが。
コードで変えるなら
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
Me.MyContlor1.PanelHeight += 100
End Sub
となりますね。
あれ、YuOさんとダブってしまった。
Panelのサイズに関しては、ユーザーコントロール自体にプロパティを用意するという方向でやってみようと思います。
YuOさん、我龍院さん、どうもありがとうございました。
あと、ユーザーコントロールをFormに貼り付け後、ユーザーコントロール内のPanelにTextBoxやComboBoxをドラッグ&ドロップすると、そのPanelに内包されるということは不可能でしょうか?
理想の形としては、さらにその後Panel内でマウスで位置調整が出来たらいいと思っています。
一応方法を探してみたのですが、皆目見当がつきません;
先ほどYuOさんが『実装をさらけ出したような表現ではなく』とおっしゃっていたので、これも不可能なような気はしますが、できたらご教授願えますでしょうか?
ツイート | ![]() |