Form配置後のユーザーコントロールの中身を操作するには?


ライト  2008-12-18 22:25:17  No: 145538

現在、Panelを配置したユーザーコントロールを作成しています。
そのユーザーコントロールをFormに配置した後、
Formのデザイナからユーザーコントロールの中のPanelをいじる(高さ、幅を変えたりなど)ことは出来ないでしょうか?

調べては見ているのですが、なかなか目ぼしい情報が得られず、
かつ右も左も分からないような状態です。

もしできる(できそう)なら、教えていただきたいと思います。
どうかよろしくお願いします。


みは  2008-12-18 22:51:18  No: 145539

UserControle.Panel.Width(Hight)="200"
とかでできないんだっけ?

#サイズ変更とかするなら、ユーザコントロールにしない方がいい気がする


ライト  2008-12-18 23:10:06  No: 145540

>UserControle.Panel.Width(Hight)="200"
のような書き方は確かに出来ます。
が、意図していることはコードでサイズをいじるのではなく、
Formのデザイン画面上でユーザーコントロール内のPanelのサイズを、マウスを用いて直接変更することなのです。
願わくば、ユーザーコントロール内のPanelの中にTextBoxを追加したり出来たらいいと思っています。

>#サイズ変更とかするなら、ユーザコントロールにしない方がいい気がする
実は今回、クラスライブラリとして製造中なのです。
将来的に使う共通部品として作っているので、ユーザーコントロールでなくてはならないのです。
なのでどうしてもForm上に置いた後、中にあるPanelのサイズを直接いじれる必要があるのですが、

やはり不可能なのでしょうか?


YuO  2008-12-19 00:49:20  No: 145541

> 将来的に使う共通部品として作っているので、ユーザーコントロールでなくてはならないのです。

「なくてはならない」理由はなんでしょうか。
View部分は分離して動作部分だけを別のクラスにして,
ユーザーコントロールにしている部分の動作は,そのクラスを呼び出すことで実現するのでは,いけないのでしょうか。

ユーザーコントロールにするのであれば,パネルのサイズなどという実装をさらけ出したような表現ではなく,
「○○の大きさ」のような,実装とは直接関係しないようなプロパティを用意し,そのプロパティの設定時にコントロール内部でパネルのサイズ変更を行うようにしてはどうでしょうか。


我龍院  2008-12-19 00:51:15  No: 145542

ユーザーコントロールも普通のクラスと考えて、
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
となりますね。


我龍院  2008-12-19 00:53:15  No: 145543

あれ、YuOさんとダブってしまった。


ライト  2008-12-19 01:46:07  No: 145544

Panelのサイズに関しては、ユーザーコントロール自体にプロパティを用意するという方向でやってみようと思います。
YuOさん、我龍院さん、どうもありがとうございました。

あと、ユーザーコントロールをFormに貼り付け後、ユーザーコントロール内のPanelにTextBoxやComboBoxをドラッグ&ドロップすると、そのPanelに内包されるということは不可能でしょうか?
理想の形としては、さらにその後Panel内でマウスで位置調整が出来たらいいと思っています。

一応方法を探してみたのですが、皆目見当がつきません;

先ほどYuOさんが『実装をさらけ出したような表現ではなく』とおっしゃっていたので、これも不可能なような気はしますが、できたらご教授願えますでしょうか?


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加