アプリ版:「スタンプのみでお礼する」機能のリリースについて

超ド級の初心者ですが、Visual Basic.NETの本を買って勉強を始めました。
その中で「フォームのResizeイベントが発生するたびに、フォームのWidthプロパティをテキストボックスに表示するように」との練習問題がありましたがうまくできません。
Visual Basic6.0もあるので、そちらで同じことをやってみたところ、以下のようなコードで正常に動作しました。

Private Sub Form_Resize()
Text1.Text = Me.Width
End Sub

Visual Basic.NETではどう記述すればいいのか教えていただけませんか?

A 回答 (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定義が…
    • good
    • 0
この回答へのお礼

できました!ありがとうございました!

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

お礼日時:2003/03/19 12:03

すみません。


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

わたしは、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
    • good
    • 0
この回答へのお礼

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

お礼日時:2003/03/19 11:56

Text1.Text = Me.Width


じゃなくて
Text1.Text = フォーム名.Width

でも ダメなのかな?
.NETを 使ってる人って あんまりいないみたいですねぇ。
    • good
    • 0
この回答へのお礼

ネットでいろいろ探したんですけれど、確かに情報自体も少なかったです・・・。

ご回答ありがとうございました。

お礼日時:2003/03/19 11:46

う~ん、最近触ってないのでうろ覚え。


たぶん、こうだったと思う・・・

Private Sub Form_Resize()
Text1.Text = Me.Size.Width
End Sub

この回答への補足

ご回答ありがとうございます。

早速やってみましたができませんでした・・・最初の「Me.Width」も取れず、「Text1.Text」が表示されただけでした。

自分でも色々やってみます、ありがとうございました。

補足日時:2003/03/18 18:06
    • good
    • 0

VB.NETは触ったことないけど、


VB6のコードをVB.NETにバージョンアップする方法があるのでは?

この回答への補足

ご回答ありがとうございます。

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

でもとても参考になりました。
ありがとうございました。

補足日時:2003/03/18 18:06
    • good
    • 0

私も .NET は 使ったことがないのでわかりませんが、



もしかしたら 型変換が必要なのかもしれませんね。
Me.Width は、整数で Text1.Text は 文字列ですから、
整数を文字列に変換してあげたらどうでしょうか?

また、エラーが出るならば、そのエラーも書いたほうが 原因が
わかりやすいと思います。

この回答への補足

早速のご回答、ありがとうございます!

具体的にはフォームの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」すら出てこないのです・・・。
なので、特にエラーは出ていません。

やっぱり超初歩的な見落しをしていますか・・・?

補足日時:2003/03/18 14:14
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!