• ベストアンサー

フォームのResizeイベントについて

超ド級の初心者ですが、Visual Basic.NETの本を買って勉強を始めました。 その中で「フォームのResizeイベントが発生するたびに、フォームのWidthプロパティをテキストボックスに表示するように」との練習問題がありましたがうまくできません。 Visual Basic6.0もあるので、そちらで同じことをやってみたところ、以下のようなコードで正常に動作しました。 Private Sub Form_Resize() Text1.Text = Me.Width End Sub Visual Basic.NETではどう記述すればいいのか教えていただけませんか?

質問者が選んだベストアンサー

  • ベストアンサー
  • BlueRay
  • ベストアンサー率45% (204/453)
回答No.7

.NET引っ張り出して、動作確認済みです。 Private Sub Form1_Resize(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Resize   Text1.Text = Me.Width End Sub まぁ、根本的に記述が変わるわけですよ。method定義が…

namk
質問者

お礼

できました!ありがとうございました! それにしてもその問題が載ってる時点での本の内容からは、イベントプロシージャ(でいいんですよね?)はクラス名とメソッド名のプルダウンから選べば自動的にできる、ていう程度の説明しかありませんでした。 自分でもなんとなくそのあたりを書換えなきゃならないのでは・・・とは思いつつ、書換え方がさっぱりわからなかったのです。 ちょっと初期段階の練習問題としては不適切ですよね・・・。 でもおかげで解決することができました。 ありがとうございます。

すると、全ての回答が全文表示されます。

その他の回答 (6)

  • sakamaro
  • ベストアンサー率44% (4/9)
回答No.6

すみません。 下のは正解ではないです。 フォームの幅をセットするところは自分で考えてください。

すると、全ての回答が全文表示されます。
  • sakamaro
  • ベストアンサー率44% (4/9)
回答No.5

わたしは、Microsof の .NET を持っておらず、 フリーウェアの SharpDevelop を使用しています。 なので、下記コードでは TextBox をコードで生成しています。 コメントを書いてあるところがミソでしょうか。 ------------------------------- Imports System Imports System.Windows.Forms Module Main Sub Main Dim fMainForm As New MainForm fMainForm.ShowDialog() End Sub Public Class MainForm Inherits System.Windows.Forms.Form 'テキストボックスの生成 Dim txt As New TextBox Public Sub New MyBase.New() Me.Text = "This is my form" 'テキストボックスを配置 txt.Parent = Me txt.left = 100 txt.Top = 100 txt.width = 100 txt.height = 50 txt.visible = true txt.text = "Hello" 'Me(MainForm1) のリサイズイベントがあったら、 'ハンドラ MainForm_Resize を呼び出すように指示 AddHandler Me.Resize, AddressOf MainForm_Resize End Sub 'フォームのリサイズハンドラ Private Sub MainForm_Resize(ByVal sender As Object, ByVal e As EventArgs) txt.text = "World" End Sub End Class End Module

namk
質問者

お礼

スゴイ! 恥ずかしながら今の私にはちんぷんかんぷんですが、後々参考にさせていただきます。 ありがとうございました。

すると、全ての回答が全文表示されます。
  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.4

Text1.Text = Me.Width じゃなくて Text1.Text = フォーム名.Width でも ダメなのかな? .NETを 使ってる人って あんまりいないみたいですねぇ。

namk
質問者

お礼

ネットでいろいろ探したんですけれど、確かに情報自体も少なかったです・・・。 ご回答ありがとうございました。

すると、全ての回答が全文表示されます。
  • BlueRay
  • ベストアンサー率45% (204/453)
回答No.3

う~ん、最近触ってないのでうろ覚え。 たぶん、こうだったと思う・・・ Private Sub Form_Resize() Text1.Text = Me.Size.Width End Sub

namk
質問者

補足

ご回答ありがとうございます。 早速やってみましたができませんでした・・・最初の「Me.Width」も取れず、「Text1.Text」が表示されただけでした。 自分でも色々やってみます、ありがとうございました。

すると、全ての回答が全文表示されます。
  • todo36
  • ベストアンサー率58% (728/1234)
回答No.2

VB.NETは触ったことないけど、 VB6のコードをVB.NETにバージョンアップする方法があるのでは?

namk
質問者

補足

ご回答ありがとうございます。 確かにこの方法はあったし、ウィザードに従ってやってみたらできはしましたが、VB.NETだけで作成する方法が知りたいのです。 でもとても参考になりました。 ありがとうございました。

すると、全ての回答が全文表示されます。
  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.1

私も .NET は 使ったことがないのでわかりませんが、 もしかしたら 型変換が必要なのかもしれませんね。 Me.Width は、整数で Text1.Text は 文字列ですから、 整数を文字列に変換してあげたらどうでしょうか? また、エラーが出るならば、そのエラーも書いたほうが 原因が わかりやすいと思います。

namk
質問者

補足

早速のご回答、ありがとうございます! 具体的にはフォームのWidthプロパティをテキストボックスに表示するだけならできたんです。 Private Sub txtWidth_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtWidth.TextChanged Dim tWidth As Integer tWidth = Me.Width txtWidth.Text = tWidth End Sub ただこれではフォームをリサイズしても、最初の「Me.Width」のままで変更されません。 かといってフォームのResizeイベントについてVB6と同じように書くと、最初の「Me.Width」すら出てこないのです・・・。 なので、特にエラーは出ていません。 やっぱり超初歩的な見落しをしていますか・・・?

すると、全ての回答が全文表示されます。

関連するQ&A