nudMinuteNum.Valueコントロールについて

このQ&Aのポイント
  • nudMinuteNum.Valueコントロールは、分を入力する数値アップダウンコントロールの名前です。
  • このコントロールは、指定されたタイマー停止時間を秒単位で記憶し、タイマーを開始します。
  • また、タイマーの秒数をカウントし、指定されたタイマー停止時間に達すると表示画像が変更されます。
回答を見る
  • ベストアンサー

nudMinuteNum.Valueコントロールについて

nudMinuteNum.Valueコントロールについて nudMinuteNum.ValueコントロールとnudSecondNum.Valueコントロールについて 下記のような簡単なプログラムなのですが、 (http://www.microsoft.com/Japan/msdn/archive/student/challenge/chap4_vb/default.aspx のラーメンタイマーのプログラム) 「nudMinuteNum は分を入力する数値アップダウン コントロールの名前で~」 とありますが、nudMinuteNumコントロールをMSDNとかで調べても見つかりません。 どなたかすみませんが、どういうことかおおしえねがえませんでしょうか? Public Class Form1 Private SecCount As Integer ' 秒数をカウントする変数 Private WaitSecond As Integer ' タイマー停止時間を秒単位で記憶する変数 Private Sub btnStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStart.Click ' 指定されたタイマー停止時間を秒単位で記憶 WaitSecond = nudMinuteNum.Value * 60 + nudSecondNum.Value ' 指定されたタイマー停止時間が 0 秒のときは開始処理をキャンセル If WaitSecond = 0 Then Exit Sub End If ' 秒数のカウントと表示を 0 に初期化 SecCount = 0 DigitalTimer.Second = 0 ' 指定されたタイマー停止時間を秒単位にしてプロパティに設定 'Timer1.Interval = (nudMinuteNum.Value * 60 + nudSecondNum.Value) * 1000 ' 表示画像を変更 PictureBox1.Image = My.Resources.Resources.調理中 ' [START] ボタンを無効化 btnStart.Enabled = False ' タイマーを開始 Timer1.Start() End Sub Private Sub DigitalTimer_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DigitalTimer.Load End Sub Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick SecCount = SecCount + 1 DigitalTimer.Second = SecCount If SecCount = WaitSecond Then ' 表示画像を変更 PictureBox1.Image = My.Resources.Resources.完成 ' タイマーを停止 Timer1.Stop() ' [START] ボタンを有効化 btnStart.Enabled = True End If End Sub End Class

  • denza
  • お礼率80% (647/806)

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

  • ベストアンサー
回答No.2

画面.Designer.vb ↑これは、通常意識しないでもよいです。 画面にコントロールを配置/移動/削除したり、プロパティを変更すると、VisualStudioが、勝手に更新を行ってくれるものです。 「VisualStudioの画面デザイン編集(GUI)が重いから、手作業でマクロ的に画面デザインの編集」というような場合に、直接エディタで更新する場合もあります。 画面のキャプションを変更するだけなのに、画面をデザインで表示したりすると、結構遅いから。。。。 私のような使い方を他にもする人もいますが、直接編集を行うというのは少数派だと思います。 ユーザコントロールを作成したりすると、直接触る機会も増えるかも知れませんが、今は意識しなくてよいと思います。 #1で余計な補足をしたために混乱させてしまったようです。すいません。 Designer.vbを直接開くのは「型や属性を確認する方法の一つ」として認識してください。 そしてこれは「GUIで自動生成される」というものなので、「通常は直接触らない」ということも併せて記憶してください。 これを踏まえてと、、、、 >MSさんがここまでは作りこんであったということでしょうか? おそらくMSさんも直接は触っていないと思います。 画面デザインで配置しただけで、Form1.Designer.vbの中身が出来上がります。 >普通~中身も触らないといけないのでしょうか? 通常触る必要はありません。 GUIで勝手に出来上がったものの方が、動く信頼性が高いです。 GUIを無視して手作業の編集を行うと、画面が起動しなくなることもあります。 自信が無い方は全てをGUIに任せて、絶対に触るべき物ではないと思います。

denza
質問者

お礼

回答ありがとうございます >画面にコントロールを配置/移動/削除したり、プロパティを変更すると、VisualStudioが、勝手に更新を行ってくれるものです。 実際に新しいフォームでnudMinuteNum(nudMinuteNum←これアップダウンオブジェクトの名前でした。)を貼りつけるとForm1.Designer.vbが勝手に書いてくれました。 nudMinuteNum.Valueはプログラム中でnudMinuteNumのValue値を利用していることだけですね。 しばらくVB触ってなかったので忘れてしまいました。 Form1.Designer.vbの動きも含めよくわかりました。 ご丁寧な説明ありがとうございました。

その他の回答 (1)

回答No.1

nudMinuteNum [Form1.Designer.vb] の中をテキストエディタで見てください。 Friend WithEvents nudMinuteNum As System.Windows.Forms.NumericUpDown Me.nudMinuteNum = New System.Windows.Forms.NumericUpDown [nudMinuteNum]はオブジェクト名であって、NumericUpDownコントロールです。 サンプルでは、分の入力欄のコントロールです。

denza
質問者

補足

回答ありがっとうございます。 まず Form1.Designer.vb ソリューションエクスプローラーで全てのファイルを表示をしないと見えないことがわかりました。 Friend WithEvents nudMinuteNum As System.Windows.Forms.NumericUpDown Me.nudMinuteNum = New System.Windows.Forms.NumericUpDown 見つかりました。ありがとうございます。 ということは、MSさんがここまでは作りこんであったということでしょうか? 普段プログラムを作る時に「Designer.vb」はいじったことがないのですが、 普通プログラムを作成するときにDesigner.vbの中身も触らないといけないのでしょうか? よろしかったらついでにお教え願えませんでしょうか?

関連するQ&A

  • VB初心者です。コードの書き方が分かりません。

    VB初心者です。 VBで(zのn乗)-(xのn乗+yのn乗)の計算が出来るようにしたいのですが、答えが必ず-1になってしまいます。 Option Explicit On Public Class Form1 Dim x As Long Dim y As Long Dim z As Long Dim n As Long Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Me.Close() End Sub Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged End Sub Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged End Sub Private Sub TextBox3_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox3.TextChanged End Sub Private Sub TextBox4_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox4.TextChanged End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click TextBox5.Text = (z ^ n) - (x ^ n + y ^ n) End Sub End Class 正しいコードの書き方を教えて下さい。 また特定の答えのときにメッセージを表示したいのですが、どうすればいいですか?

  • Elseifのコードが分かりません。(至急)

    急ぎのため再度の質問失礼します。 3つの数字すべてが7のとき、メッセージ1を出し、 どれか2つだけが7のときは、メッセージ2を出し、 どれか1つだけが7のときは、メッセージ3を出し、 どこにも7が含まれていないときは、メッセージ4を出すようにEndifを使って書きたいのですが、正しいコードを教えて下さい。 Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Randomize() End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Me.Close() End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click PictureBox1.Visible = False Label4.Visible = False Label1.Text = CStr(Int(Rnd() * 10)) Label2.Text = CStr(Int(Rnd() * 10)) Label3.Text = CStr(Int(Rnd() * 10)) If End If End Sub Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click End Sub Private Sub Label3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label3.Click End Sub Private Sub Label5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label5.Click End Sub End Class よろしくお願いします。

  • このコードはどこが間違っていますか?(至急)

    急ぎのため再度の質問失礼します。 (zのn乗)-(xのn乗+yのn乗)の計算をさせて、答えが0のときにメッセージを表示したいのですが、どのようなコードを書けばいいのでしょうか? Option Explicit On Public Class Form1 Dim x As Long Dim y As Long Dim z As Long Dim n As Long Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Me.Close() End Sub Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged End Sub Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged End Sub Private Sub TextBox3_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox3.TextChanged End Sub Private Sub TextBox4_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox4.TextChanged End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click x = TextBox1.Text y = TextBox2.Text z = TextBox3.Text n = TextBox4.Text TextBox5.Text = (z ^ n) - (x ^ n + y ^ n) If (TextBox5 .Text= 0) Then Label6.Visible = True End If End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load End Sub Private Sub Label6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label6.Click End Sub End Class このコードだと答えが必ず-1になってしまうのですが、どこを直せばいいのでしょうか? 正しいコードを教えて下さい。 よろしくお願いします。

  • System.Timers.Timer について

    下記のようなコードで動いていますが、 TestFunc に独自の引数を渡したいと考えています。 どうすれば実現できるでしょうか? 引数以外(メンバ変数等)では対応できていますので、 引数の方法だけ教えてほしいです。 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load timer = New System.Timers.Timer() AddHandler timer.Elapsed, New ElapsedEventHandler(AddressOf TestFunc) timer.Interval = 1000 timer.Start() End Sub Public Sub TestFunc(ByVal sender As Object, ByVal e As ElapsedEventArgs) Console.WriteLine(DateTime.Now) End Sub

  • Tickイベントについての質問

    1秒間のループ回数を得るために下記のようなコードを記述したのですが、Tickイベントが発生せずループから抜けません。以前はVB6(Timer1_Timerイベント)を使用していたのですが、何の問題もなく使用出来ていました。誰か分る方、ご教授下さい。もちろんInterval=1000です。 '1sec間に繰り返されるループ回数 Private mlng1SecTimeCount As Long '1sec経過フラグ Private msht1SecFlg As Short '(省略) Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'ディレイタイム設定 DELAY_TIME_SETTING() End Sub Private Sub DELAY_TIME_SETTING() 'ディレイタイム設定 '解説:1sec間に実行されるループ回数の算出。 'ループ回数格納用変数 Dim lngLoopCount As Long 'タイマー1起動 Timer1.Enabled = True Do Until msht1SecFlg = 1 lngLoopCount += 1 Loop 'タイマー1停止 Timer1.Enabled = False 'データ保存 mlng1SecTimeCount = lngLoopCount End Sub Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick '解説:1sec経過後にインクリメント。 'インクリメント msht1SecFlg += 1 End Sub 以上よろしくお願い致します。

  • フォーム上の任意のコントロール上でのイベントをまとめてハンドリングする方法

    .NETにおいて、フォーム上に配置されたコントロールで発生したイベントを、各コントロールごとではなくて、まとめてハンドルする方法はないでしょうか。 例えば次のようなフォームがあります。 (Button1, Button2, Button3は、フォームに配置されたボタンとします) Public Class MyForm   Private Sub Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Button2.Click, Button3.Click   End Sub End Class ボタンが3つ程度の場合はこれで良いと思うのですが、例えば(極端に言えば)ボタンが100個ある場合、 Handles Button1.Click, Button2.Click, (途中省略.....) Button100.Click と書くしかないのでしょうか。 後で対象コントロールが増えたり減ったりした場合に間違いが起こりそうなので、このような書き方は避けたいです。 フォーム上のどのコントロールでも構わないからとにかくクリックイベントが発生したことを知るための方法はないでしょうか。 例えば次のようなかんじでハンドリングできないでしょうか。 Private Sub All_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles フォーム上の任意のコントロールでのClickイベント End Sub (環境はVB.NET2005です)

  • 簡単なプログラムにまとめる方法

    前回、同じようなプログラムを簡単にまとめる方法を教えて頂いたのですが新しい事で困ってしまいました。 説明が非常にへたくそなので、プログラムをそのまま書きます・・・・ スイマセン Private Sub TextBox1_1_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1_1.GotFocus Me.TextBoxNum.Text = "1" End Sub Private Sub TextBox2_1_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox2_1.GotFocus Me.TextBoxNum.Text = "2" End Sub Private Sub TextBox3_1_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox3_1.GotFocus Me.TextBoxNum.Text = "3" End Sub 上記のプログラム、TextBox○○○_1.KeyPressの○○○の部分が1から100まであるのですが、あまりにも行数が多くなって長くなるので、以下のプログラムで纏めたのですが、 Me.TextBoxNum.Text = "○○○" にフォーカスされたTextBox○○○_1の○○○を入れる方法はありますか? Private Sub TextBox1_1_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1_1.GotFocus,TextBox2_1.GotFocus,TextBox3_1.GotFocus Me.TextBoxNum.Text = "○○○" End Sub 説明が下手くそでスイマセン、ほかに新しい方法でも有ればお願いします よろしくお願いしますm(__)m

  • 自作クラスのイベントを外部ハンドラでスレッドセーフ

    ■.NETモジュールプロジェクト(DLL) Public Class MyClass   Public Event hoge( ByVal sender As Object, ByVal e As EventArgs )   Private WithEvents Timer As Timers.Timer   Private Sub New()     Timer = New Timers.Timer : Timer.Interval = 10 : Timer.Start()   End Sub   Private Sub fuga( ByVal sender As Object, ByVal e As EventArgs ) Handles Timer.Elapsed     RaiseEvent hoge( Me, New EventArgs ) ' 一定時間ごとにイベントを発生させる   End Sub End Class ■上の.NETモジュールを参照している Windows Form アプリケーションプロジェクト(EXE) Public Class Form1   Private WithEvents foo As MyClass.MyClass   Public Sub New()     InitializeComponent()     foo = New MyClass.MyClass   End Sub   Private Sub bar() Handles foo.hoge     TextBox1.Text = "baz" ' TextBox1 は デザイナで Form1 に貼り付け済み   End Sub End Class という 2 プロジェクトを含むソリューションを作成しました。実行すると、 有効ではないスレッド間の操作: コントロールが作成されたスレッド以外のスレッドからコントロール 'TextBox1' がアクセスされました。 というエラーが出てきます。 foo が MyClass ではなく、system.windows.forms.dll などに入っている Button や Form といったコントロールの場合は、上記の bar() のような書き方でもスレッドセーフに扱えるので、MyClass もForm1 のコードを修正する事なく、利用できたらなと思っています。 その場合、どのように MyClass を書けばいいでしょうか。環境は VS2008 で、.NET2.0 ベースです。

  • VBのこのコードの意味を教えてください。(至急)

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click このコードの意味を教えてください。 よろしくお願いします。

  • VB2008EEラジオボタンにて、

    VB2008EEラジオボタンにて、 チェックされていない時、というのはif文で指定できるでしょうか? チェックボックスは、下記で出来ますが、ラジオボタンでは出来るでしょうか? Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If CheckBox1.CheckState = CheckState.Unchecked Then   aaa = "1" End If End Sub 複数のラジオボタンがあって1つ選んだ後に別のを選び直した後に、選ばれてないほうの値を変えたいです。 Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged aaa = "1" End Sub Private Sub RadioButton2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton2.CheckedChanged bbb = "2" End Sub

専門家に質問してみよう