コードからオブジェクトを配置するには?

解決


VB.netの赤ちゃん  2005-09-08 01:54:28  No: 124994

VB.netをはじめたばかりなのですが、
コードからButtonやRichTextBoxを作成するには
どうしたらよいのでしょうか?


魔界の仮面弁士  2005-09-08 02:18:03  No: 124995

VB.NET 2002 や VB.NET 2003 の開発環境をお持ちでしょうか?

もしあるなら、まずはButtonを、ツールボックスから「手作業」で
貼ってみてください。そうすると、コードウィンドウに、

    『 Windows フォーム デザイナで生成されたコード 』

という行が現れますので、それを開くと、その中に、
「コードからButtonを作成する」コードが自動的に埋め込まれます。
あとはそれを真似ればOKでしょう。


VB.netの赤ちゃん  2005-09-08 02:38:07  No: 124996

魔界の仮面弁士さん、ご返答ありがとうがざいました
さっそく真似て書いてみたのですが
どうもうまくいかないみたいです。
詳しく教えていただけないでしょうか?


魔界の仮面弁士  2005-09-08 03:01:15  No: 124997

> どうもうまくいかないみたいです。
もう少し「具体的」な状況説明をお願いします。m(_ _)m

詳しく教えようにも、そちらの状況がわからないと、
教えようが無かったりしますので。(^_^;)

---
それぞれのメソッドの意味がわからないのでしょうか?
ならば、どのメソッドが理解できなかったのかを教えて下さい。

コンパイルは通るけれど、期待したような結果にならないのでしょうか?
だとしたら、現状のソースコードを見せてください。

そもそも、コンパイルすら通らないのでしょうか?
ならば、そのコードと、エラー箇所、エラー内容などを示してください。


VB.netの赤ちゃん  2005-09-08 03:55:45  No: 124998

コーディングの時にエラーはでないのですが
実行してみるとボタンが配置されるはずの所が真っ白なままです
これがソースです

    Friend WithEvents Button4 As System.Windows.Forms.Button

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e _
As System.EventArgs) Handles Button3.Click
        MsgBox("新しいボタン")
        Me.Button4 = New System.Windows.Forms.Button
        Me.SuspendLayout()

        Me.Button4.Location = New System.Drawing.Point(0, 0)
        Me.Button4.Name = "Button4"
        Me.Button4.Size = New System.Drawing.Size(80, 32)
        Me.Button4.TabIndex = 0
        Me.Button4.Text = "Button4"
    End Sub


VB.netの赤ちゃん  2005-09-08 03:58:16  No: 124999

すみません
メソッドの意味は、
Me.SuspendLayout()

Me.Button4 = New System.Windows.Forms.Button
って言うのが分かりません


魔界の仮面弁士  2005-09-08 04:49:25  No: 125000

> これがソースです
最後に、『Me.Controls.Add(Me.Button4)』を追加してみてください。

作成したコントロールは、Controls.Add か Controls.AddRange を使って
フォームに追加する必要があります。

# 『 Windows フォーム デザイナで生成されたコード 』の中にも、
# この記述がありますので、探してみてください。

> Me.SuspendLayout()
SuspendLayoutメソッドですね?
これは、ResumeLayoutメソッドとセットで使う事になります。

コントロールのサイズ等が変更された場合には、『Layoutイベント』と
いうものが発生するのですが、そのイベントの発生を、一時的に抑制する
ためのものです。

ResumeLayoutメソッドはその逆ですね。SuspendLayoutにて中止されていた
通常のレイアウト処理を再開するために使います。

> Me.Button4 = New System.Windows.Forms.Button
これは、ボタンの「インスタンス」を生成している部分ですね。
……インスタンス(instance)、という言葉はわかりますでしょうか?

左辺の「Me.Button4」というのは、最初に書いた
『Friend WithEvents Button4 As System.Windows.Forms.Button』という
という宣言に対応しています。

この「Friend 〜」という文は、「Button4という名前の器(変数)を用意した」
という事を意味しています。

As句以降にあるのは、このButton4の形状(データ型)を表す物です。
この場合は、Button型(正確には、System.Windows.Forms.Buttonクラス)ですね。

で、ここからが本題。

Button4という器(変数)には、最初は何も入っていません。
つまり「空っぽ(Nothing)」の状態であり、このままでは役に立ちません。

Button4を実際にボタンとして使うためには、この器(変数)に、まずは
ボタンの「実態(インスタンス)」を、ここに入れなければならないのです。

そして、インスタンスを作成するためには、「New」が使われます。

つまり今回のように、
  Me.Button4 = New Button()
のように書いた場合、これはButtonの実態を作成して、それを
変数Button4に格納している……という意味になります。

# こんな説明でわかるかな……。


VB.netの赤ちゃん  2005-09-09 02:58:24  No: 125001

ありがとうございました
無事解決いたしました


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

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






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