
いつもお世話になっています。
独学で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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ユーザーフォームの書き出しで追加のご相談 ユーザーフォームの値をシートに書き出す際、コードが表示され 2 2022/08/05 10:58
- Visual Basic(VBA) フレーム内のオプションボタンの選択結果をセルに書き出したい。 図のような預金種目というフレームにオプ 2 2022/07/29 11:12
- Visual Basic(VBA) VBA 重複チェック後に値をワークシートに転記する方法を教えてください。 1 2023/03/19 12:43
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Visual Basic(VBA) ActiveReportのdetailをデータセットの自動バインドを使って帳票を出力しています。 1 2023/08/16 07:16
- IT・エンジニアリング ActiveReportのdetailをデータセットの自動バインドを使って帳票を出力しています。 1 2023/08/16 07:17
- Visual Basic(VBA) マクロで最終行を取得したい 4 2023/05/28 12:14
- Excel(エクセル) 複数のセルでの文字判定について 5 2022/06/07 14:08
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- Visual Basic(VBA) テーブルを配列に入れて、元のテーブルの行番号を取得したい 1 2022/08/16 20:15
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テキストボックス(VBA)でEnter...
-
ACCESS2010 ActiveXコントロー...
-
DataGridViewTextBoxColumnを継...
-
エクセルの画像にツールチップ...
-
MFCでbitmapを背景にしてstatic...
-
ListViewでのリスト表示(初歩...
-
MSFlexGridとDataGridの違いに...
-
C# TEXTが空白であるLABELは何...
-
ADOのCursorLocationプロパティ
-
VB2005 コードでのコントロー...
-
コンボボックスの高さを変更し...
-
VBA基本構文の作り方 リスト...
-
VB6でLabelの最前面にText Box...
-
Excel VBA テキストボックス...
-
C# アプリ終了時に設定を記憶...
-
TextBoxのhWndプロパティVBAで...
-
チェックボックスの文字色の変え方
-
AccessForm内での警告メッセージ
-
Wordテキストコントロールが未...
-
VB6でPNGファイルを扱うには?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ユーザーフォームに日付を表示...
-
テキストボックス(VBA)でEnter...
-
エクセルの画像にツールチップ...
-
Wordテキストコントロールが未...
-
コンボボックスの高さを変更し...
-
Enabled=Falseのテキストボック...
-
ADOのCursorLocationプロパティ
-
MSFlexGrid
-
checkbox付きListViewで デフ...
-
VBからエクセルのテキストボ...
-
PictureBoxの背景色変更(VB.NET)
-
VB.NETで縦書表示をしたいので...
-
デザインモードを解除すると消...
-
エクセル入力規制リスト行数
-
C# アプリ終了時に設定を記憶...
-
DataGridViewで行の展開みたい...
-
VB6でLabelの最前面にText Box...
-
VB.NET ToolTipの表示条件について
-
C# TEXTが空白であるLABELは何...
-
チェックボックスの文字色の変え方
おすすめ情報