DOBON.NET DOBON.NETプログラミング掲示板過去ログ

テキストボックスを実行時に作成する

分類:[.NET]

初めて書き込みます.よろしくお願いいたします.
VB.NETで,実行時に,ちょうど開発時にツールボックスからテキストボックスを
ドラッグして貼り付けるのと同じように,テキストボックスをフォーム上に
生成させたいのですが,どうしたらよいでしょう.
一応,やってみたのが下記コード(コードではPictureBox上に生成させてます).

Private Sub PictureBox1_MouseDown(ByVal sender As System.Object,
ByVal e As System.Windows.Forms.MouseEventArgs) Handles
PictureBox1.MouseDown
SX = e.X
SY = e.Y
End Sub

Private Sub PictureBox1_MouseUp(ByVal sender As System.Object,
ByVal e As System.Windows.Forms.MouseEventArgs) Handles
PictureBox1.MouseUp
EX = e.X
EY = e.Y
T1 = New TextBox()
'T1.BorderStyle = BorderStyle.None
T1.AutoSize = False
T1.Text = TextBox1.Text
T1.Width = EX - SX
T1.Height = EY - SY
T1.Location = New Point(SX, SY)
T1.AllowDrop = True
Me.PictureBox1.Controls.Add(T1)
End Sub

これで,生成はできるのですが,開発時のようにテキストボックスにハンドルをつけて
移動させたり,大きさを変えたり,プロパティを変えたりさせたいのです.
コンポーネントとして,作りこまなくてはならないのでしょうか.
Officeのテキストボックスオブジェクトをそのまま使えたら,その方が簡単なような
気もしますが,それもやり方がわかりません.
ご存知の方,ご教示ください.
始めまして。今ちょうど同じようなことをしています。

下記の内容ですが、イベントハンドラを作れば良いと思います。
例えば、ボタン押下(KEYPRESS)のイベントを取りたい場合、

Private Sub PictureBox1_MouseUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseUp
Dim ex, ey As Integer
ex = e.X
ey = e.Y
T1 = New TextBox()
'T1.BorderStyle = BorderStyle.None
T1.AutoSize = False
T1.Text = TextBox1.Text
T1.Width = ex - sx
T1.Height = ey - sy
T1.Location = New Point(sx, sy)
T1.AllowDrop = True
Me.PictureBox1.Controls.Add(T1)

------ここを追加------
AddHandler T1.KeyPress, New KeyPressEventHandler(AddressOf Key_Press)
------ここまで--------

End Sub

----イベント発生時の動作-------

Private Sub Key_Press(ByVal sender As Object, ByVal e As KeyPressEventArgs)
MsgBox("hello")
End Sub

------------------------------

このやり方でいかがでしょう??
SHさん,レスありがとうございます.
申し訳ありません.私の書き方が悪かったようです.
私の言うハンドルというのは,開発のデザイン時にテキストボックスをフォームに
貼り付けたときにテキストボックスの四隅に表示される"□"マークのことです.
(これって,ハンドルというのとちがいましたっけ?)
いずれにせよ,このような場でハンドルというと,SHさんがとられたような
意味になってしまいますね.申し訳ございませんでした.
■No954に返信(TYさんの記事)
> 私の言うハンドルというのは,開発のデザイン時にテキストボックスをフォームに
> 貼り付けたときにテキストボックスの四隅に表示される"□"マークのことです.
> (これって,ハンドルというのとちがいましたっけ?)

結局のところ、「作りこむ」ということになりますが、VS.NETのフォームのデザインのようなコントロールの周りの"□"(「グラブハンドル」って言うんでしょうか)や"もやもや"はControlPaintクラスで描画できます。

・.NET Tips - コントロールを描画する
http://dobon.net/vb/dotnet/graphics/drawcontrols.html
管理人さん,ありがとうございます.
これから,やってみます.

DOBON.NET | プログラミング道 | プログラミング掲示板