質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

2回答

8441閲覧

カウントダウンタイマーで0からカウントアップさせたい

NobNishihata

総合スコア12

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2016/01/23 15:50

VB.net初心者です。
講演会で使うカウントダウンタイマーをVB.netで作っています。
・TextBox1,2をそれぞれ 分、秒の設定用とし、そこに、例えば20,0と打ち込み「時間設定」ボタン(Button4)
を押すとLabel1に「20:00」と表示される。
・「スタート」ボタン(Button1)を押すと、1秒刻みでカウントダウンが始まる。
・「ストップ」ボタン(Button2)を押すと、タイマーが停止する。
・「リセット」ボタン(Button3)を押すとタイマーがリセットされ、初期状態に戻る。

この時、タイマーが00:00になった後、経過時間として00:01、00:02という風に、
カウントアップさせたいのですが、方法が分かりません。どのようにすればよいでしょうか?
現在書いているコードは以下の通りです。

Public Class Form1
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
Dim M1 As String = Me.TextBox1.Text
Dim S2 As String = Me.TextBox2.Text

Dim M11 As Integer = Val(M1) Dim S22 As Integer = Val(S2) Label1.Text = Format(M11, "00") & ":" & Format(S22, "00") End Sub Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick Dim M1 As String = Me.TextBox1.Text Dim S2 As String = Me.TextBox2.Text Label1.Text = M1 + S2 Me.Timer1.Interval = 1000 Static iSec As Integer iSec = iSec - 1 S2 = S2 + iSec Dim ts1 As New TimeSpan(0, M1, S2) Dim ticks As Long = ts1.Ticks Dim ts2 As New TimeSpan(ticks) Dim ts2M = (ts2.Minutes) Dim ts2S = (ts2.Seconds) Label1.Text = Format(ts2M, "00") & ":" & Format(ts2S, "00") End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Timer1.Start() End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click Timer1.Stop() End Sub Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click Application.Restart() End Sub

End Class

ご教示のほど、よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

質問の主旨がよく分かりませんが

タイマーが00:00になった後、経過時間として00:01、00:02という風に、

カウントアップさせたい

ならそのとおりに作ったらどうでしょう?

時間が経過したか?
No:カウンタから引く
Yes:カウンタに足す

じゃダメですか? 的を外した回答でしょうか?
ま、このやり方だと常に「経過したか?」という判断が入るので、
面白くは無いでしょうが・・・。

投稿2016/01/24 05:01

nob.

総合スコア711

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

NobNishihata

2016/01/24 10:18

ご回答いただきありがとうございました。他の方の回答を参考にさせていただき、表示の部分の文字列を System.Math.Abs()とすることで、絶対値で表示することにしました。貴重なご意見を頂きありがとうございました。
guest

0

ベストアンサー

TimeSpanで残り時間を計算して、表示はその絶対値を採用すればいいんじゃないですか?

TimeSpan メソッド -> Duration メソッド

投稿2016/01/23 20:15

dojikko

総合スコア3939

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

NobNishihata

2016/01/24 10:20

ご回答いただき、ありがとうございました。「表示はその絶対値を採用すればいい」というご意見に着目し、表示の部分の文字列を System.Math.Abs()とすることで、マイナス表示を回避しました。簡単なことでした。貴重なご示唆を頂きありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問