いつもお世話になっています。
独学でVBの勉強をしているものなのですが、
どうしてもわからないことがあるので教えてください。
デザイナの画面で配置したテキストボックスなどのコントロールを、
コードでコピーして複数配置するようにしたいんです。
そこで、デザイナでTextBox1を配置して、
コードで以下のように記述しました。
Dim MyTextBox1 As New TextBox
MyTextBox1 = TextBox1
Me.Controls.Add(MyTextBox1)
すると、デザイナ画面で配置したテキストボックスが無くなって、
新たにコードで作成したテキストボックスだけが、
画面に表示されてしまうんです。
実際に行いたいことは、複数のコントロールをパネル上に配置して、
そのパネルをコードで複数作成することなのですが、
そもそもそのようなことはできないのでしょうか?
かなり的外れな質問になってしまっているかもしれませんが、
お分かりでしたら教えてください。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
MyTextBox1 = TextBox1 としてしまうと その前の行でせっかく作成したインスタンス(実体)をつぶしてしまっています
作成しているプロジェクトの Form1.Designr.vbファイルなどでTextBox1に関する記述をすべて検索してみましょう
newで作成して Location,Name,Size,TabIndex,Textなどのプロパティを設定 Controls.Addでコレクションに追加
といった処理になっていると思います
Dim Pt as Point
pt = TextBox1.Location
pt.Offset(0, TextBox1.Height + 4 )
myTextBox1.Location = pt
myTextBox1.Size = TextBox1.Size
myTextBox1.Name = "MyTextBox1"
myTextBox1.TabIndex = Me.Controls.Count + 1
myTextBox1.Text = "initial Text"
Me.Controls.Add( myTextBox1 )
といった具合です
パネルに追加するのであれば Me.Controlsを Panel1.Controlsなどに変更すればよさそうですよ
ご返答ありがとうございます。
私もredfox63さんが教えてくださった方法で試そうとしたのですが、
パネルに配置するコントロールはまだ確定ではなくて、
細かい場所の設定などまで考えると、
できればデザイナ画面で配置をして、
それをコピーできればと思ったんです・・・
やっぱり、横着しないでコードを書けってことですかね^^;
No.1
- 回答日時:
MyTextBox1 = TextBox1
↑この時点で、MyTextBox1が見るオブジェクトはTextBox1となり、TextBox1のコピーではなく、TextBox1そのものになってしまいます。
単純にテキストボックスを追加するだけなら、上記一文はいりません。
TextBox1のコピーをつくるなら
MyTextBox1 = TextBox1.Clone()
になります。
ご返答ありがとうございます。
早速試してみたのですが、
MyTextBox1 = TextBox1.Clone()
というふうに記述すると、
'Clone' は 'System.Windows.Forms.TextBox' のメンバではありません。
というエラーが出てしまうんです。
何か他に記述しなければならないコードなどがあるのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
夏が終わったと感じる瞬間って、どんな時?
まだまだ暑い今日この頃。 しかしながら、もう夏は終わっている!……はず。 あなたが思う「夏が終わった!」エピソードを教えてください。
-
家・車以外で、人生で一番奮発した買い物
どんなものにお金をかけるかは人それぞれの価値観ですが、 誰もが一度は清水の舞台から飛び降りる覚悟で、ちょっと贅沢な買い物をしたことがあるはず。
-
CDの保有枚数を教えてください
ひとむかし前はCDを買ったり借りたりが主流でしたが、サブスクで簡単に音楽が聴ける今、CDを手に取ることも減ってきたかと思います。皆さんは2024年現在、何枚くらいCDをお持ちですか?
-
【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】
【お題】 ・世界最古のコンビニについて知ってる事を教えてください
-
14歳の自分に衝撃の事実を告げてください
タイムマシンで14歳の自分のところに現れた未来のあなた。 衝撃的な事実を告げて自分に驚かせるとしたら何を告げますか?
-
VB.NETのスクロールバーコントロール動作について
Visual Basic(VBA)
-
Form_Load と Form_Activate のタイミング
Visual Basic(VBA)
-
FriendとPublicの違い。。。
Visual Basic(VBA)
-
-
4
VBの画面サイズについて
Visual Basic(VBA)
-
5
SPREAD(GrapeCity)のセルにフォーカスを設定するにはどうしたらいいのでしょうか?
Visual Basic(VBA)
-
6
vb.netで画面のコントロールId名を変数で動的に制御し処理する方法
Visual Basic(VBA)
-
7
VB.NET2005 TextBox 高さ(Height) 変更
Visual Basic(VBA)
-
8
DoEventsがやはり分からない
Visual Basic(VBA)
-
9
[VB.net] DataGridViewの列ヘッダー複数行表示に伴う不具合?について
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・【お題】絵本のタイトル
- ・【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ラベルの表示
-
VBのShapeコントロールを使用し...
-
ASP.NET : FormView内コントロ...
-
テキストボックス(VBA)でEnter...
-
FTPサーバからダウンロードする...
-
VB2005 コードでのコントロー...
-
カメラスクロールするのを動画...
-
パソコンへの「Dropbox...
-
VBA シートのボタン名を変更し...
-
VBA(エクセル)で自動的にボタン...
-
「Columns("A:C")」の列文字を...
-
worksheetFunctionクラスのVloo...
-
エクセル・VBA CheckBoxのオブ...
-
VBA(エクセル)のユーザー...
-
VBAがブレークモードになっ...
-
CommandButtonのCaptionを変化...
-
DataGridのIME制御
-
EXCEL ユーザーフォームのタイ...
-
ExcelVBAのフォーム上のimageコ...
-
ユーザーフォームを表示中にシ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ADOのCursorLocationプロパティ
-
テキストボックス(VBA)でEnter...
-
Wordテキストコントロールが未...
-
エクセルの画像にツールチップ...
-
チェックボックスの文字色の変え方
-
checkbox付きListViewで デフ...
-
C# TEXTが空白であるLABELは何...
-
VBからエクセルのテキストボ...
-
コンボボックスの高さを変更し...
-
デザインモードを解除すると消...
-
C# アプリ終了時に設定を記憶...
-
VB6でLabelの最前面にText Box...
-
Enabled=Falseのテキストボック...
-
DataGridViewで行の展開みたい...
-
VB.NETで縦書表示をしたいので...
-
エクセル入力規制リスト行数
-
TableLayoutPanelでspan
-
MSFlexGrid
-
ACCESS2010 ActiveXコントロー...
-
MFCでbitmapを背景にしてstatic...
おすすめ情報