C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[6]: テキストボックスなどからのユーザーの入力について


(過去ログ 34 を表示中)

[トピック内 14 記事 (1 - 14 表示)]  << 0 >>

■16966 / inTopicNo.1)  テキストボックスなどからのユーザーの入力について
  
□投稿者/ mari (19回)-(2008/04/14(Mon) 15:13:14)

分類:[C#] 

テキストボックスまたはナンバーアップダウンコントロールからの入力を
カウンターのカウント数セットするとき
      private void timer3_Tick(object sender, EventArgs e)
{
String con = textBox1.Text;
if (counter >= (con))
{
// Exit loop code.
timer1.Enabled = false;
counter = 0;
}
else
{
// Run your procedure here.
// Increment counter.
counter = counter + 1;
textBox3.Text = "" + counter.ToString();
}
とすると演算子">="を"int"と"string"型のオペラントに適用することはできません。となり、
String con = textBox1.Text;
if (counter = (con))
に変えると
型"string"を型"int"に暗黙的に変換できません。
となります。
どうすれば解決できますか?

自分で作った文字列置き換えのコードでは問題なくできるんだけど・・・
if (checkBox35.CheckState == CheckState.Checked)
{
String Str = textBox89.Text;
String Str1 = textBox88.Text;
string strData = (richTextBox1.Text);

richTextBox1.Text = (strData.Replace((Str), (Str1)));
}
引用返信 編集キー/
■16967 / inTopicNo.2)  Re[1]: テキストボックスなどからのユーザーの入力について
□投稿者/ やじゅ (302回)-(2008/04/14(Mon) 15:21:43)
No16966 (mari さん) に返信
> 型"string"を型"int"に暗黙的に変換できません。
> となります。
> どうすれば解決できますか?
>

まず、型について勉強した方がいいですね。

文字列を数字に変換する
http://dobon.net/vb/dotnet/programing/convert.html
引用返信 編集キー/
■16968 / inTopicNo.3)  Re[1]: テキストボックスなどからのユーザーの入力について
□投稿者/ επιστημη (929回)-(2008/04/14(Mon) 15:22:12)
επιστημη さんの Web サイト
> String con = textBox1.Text;
> if (counter >= (con))

textBox1.Textに入ってる「数字」を「数値」に変換したいのかしら。
int.Parse / int.TryParse で変換できます。

引用返信 編集キー/
■16970 / inTopicNo.4)  Re[2]: テキストボックスなどからのユーザーの入力について
□投稿者/ まどか (503回)-(2008/04/14(Mon) 15:28:44)
> textBox3.Text = "" + counter.ToString();

この行が眼中に無いということは、とにかく型ですよ、型。
数値(1)と文字("1")についてしっかり理解してください。

引用返信 編集キー/
■16975 / inTopicNo.5)  Re[2]: テキストボックスなどからのユーザーの入力について
□投稿者/ mari (20回)-(2008/04/14(Mon) 16:07:43)
No16968 (επιστημη さん) に返信
>> String con = textBox1.Text;
>> if (counter >= (con))
>
> textBox1.Textに入ってる「数字」を「数値」に変換したいのかしら。
> int.Parse / int.TryParse で変換できます。
>

TryParseで検索してみたらサンプルあったのでそれをちょっと加工してやってみたら
テキストボックス1に入力した数字分までカウントしてくれました。
しかしなぜかループになってしまった・・・
しかもタイマーティックの設定が無効になってしまった(1秒間隔でしかうごかない)

string num = textBox4.Text;
int i;

try
{
i = Int32.Parse(num);
}
catch
{
Console.WriteLine("変換失敗");
}

try
{
i = Convert.ToInt32(num);
}
catch
{
Console.WriteLine("変換失敗");
}

bool result = Int32.TryParse(num, out i);
Console.WriteLine(result); // 出力:false
//Console.WriteLine(i); // 出力:0

if (counter >= (i))
{
// Exit loop code.
timer1.Enabled = false;
counter = 0;
}
引用返信 編集キー/
■16976 / inTopicNo.6)  Re[3]: テキストボックスなどからのユーザーの入力について
□投稿者/ επιστημη (930回)-(2008/04/14(Mon) 16:13:24)
επιστημη さんの Web サイト
> テキストボックス1に入力した数字分までカウントしてくれました。
> しかしなぜかループになってしまった・・・
> しかもタイマーティックの設定が無効になってしまった(1秒間隔でしかうごかない)

これは報告? それとも質問/相談?
後者なら質問ヘタすぎ。
なにが訊きたいのやらさっぱりわからん。

引用返信 編集キー/
■16977 / inTopicNo.7)  Re[4]: テキストボックスなどからのユーザーの入力について
□投稿者/ mari (21回)-(2008/04/14(Mon) 16:24:40)
No16976 (επιστημη さん) に返信
>>テキストボックス1に入力した数字分までカウントしてくれました。
>>しかしなぜかループになってしまった・・・
>>しかもタイマーティックの設定が無効になってしまった(1秒間隔でしかうごかない)
>
> これは報告? それとも質問/相談?
> 後者なら質問ヘタすぎ。
> なにが訊きたいのやらさっぱりわからん。
>

カウンター数をコードに書いた場合はちゃんとtimer.Intervalの各指定スピードで50までカウントし止まり、ループにならなかったが

      if (counter >= (50))
{
// Exit loop code.
timer1.Enabled = false;
counter = 0;
}

カウンター数をテキストボックスに入力それを数値に変換し入れるコードを書いた場合timer.Intervalの各指定スピードが無効になり1秒間隔でしか動かなく、
50までカウントしたあと止まらず0から再カウントを始めてしまう

      string str = textBox1.Text;
int num = int.Parse(str);

if (counter >= (num))
{
// Exit loop code.
timer1.Enabled = false;
counter = 0;
}
引用返信 編集キー/
■16979 / inTopicNo.8)  Re[5]: テキストボックスなどからのユーザーの入力について
□投稿者/ はつね (599回)-(2008/04/14(Mon) 16:47:59)
はつね さんの Web サイト
No16977 (mari さん) に返信
> カウンター数をテキストボックスに入力それを数値に変換し入れるコードを書いた場合timer.Intervalの各指定スピードが無効になり1秒間隔でしか動かなく、
> 50までカウントしたあと止まらず0から再カウントを始めてしまう

private void timer3_Tick(object sender, EventArgs e) の中で string str = textBox1.Text ってしているんですよね。
timer3_Tickが発生したときのtextBox1.Textの値は期待した値でありつづけていますか?
つまり、counterが50になったときの if (counter >= (num)) の行のところでのnumは何になっていますか?

引用返信 編集キー/
■16980 / inTopicNo.9)  Re[6]: テキストボックスなどからのユーザーの入力について
□投稿者/ mari (22回)-(2008/04/14(Mon) 17:29:36)
No16979 (はつね さん) に返信
> ■No16977 (mari さん) に返信
>>カウンター数をテキストボックスに入力それを数値に変換し入れるコードを書いた場合timer.Intervalの各指定スピードが無効になり1秒間隔でしか動かなく、
>>50までカウントしたあと止まらず0から再カウントを始めてしまう
>
> private void timer3_Tick(object sender, EventArgs e) の中で string str = textBox1.Text ってしているんですよね。
> timer3_Tickが発生したときのtextBox1.Textの値は期待した値でありつづけていますか?
> つまり、counterが50になったときの if (counter >= (num)) の行のところでのnumは何になっていますか?
>

">="はcounterの数字がnumの数字より大きい場合だからcounterが50になったときnumは51
"=="にした場合はcounterが50になったときnumは50になるけどどちらでも
timer.Intervalの各指定スピードが無効になり1秒間隔でしか動かなく、50までカウントしたあと止まらず0から再カウントを始めてしまいます。


引用返信 編集キー/
■16981 / inTopicNo.10)  Re[3]: テキストボックスなどからのユーザーの入力について
□投稿者/ 癒耶 (2回)-(2008/04/14(Mon) 17:38:01)
2008/04/14(Mon) 17:41:34 編集(投稿者)
2008/04/14(Mon) 17:40:19 編集(投稿者)

No16970 (まどか さん) に返信
>>textBox3.Text = "" + counter.ToString();
>
> この行が眼中に無いということは、とにかく型ですよ、型。
> 数値(1)と文字("1")についてしっかり理解してください。
>
Timer1とTimer3があるけど同じものです?
0から再カウントしてしまうという事は
一度
timer1.Enabled = false;
counter = 0;
この処理を通り、ループを抜けた後に
どこか別の部分でまたTimerが動き出すような処理が入っている可能性はないでしょうか?

>">="はcounterの数字がnumの数字より大きい場合だからcounterが50になったときnumは51
numの数字までカウントするものなら
numは常に50では(50と入力してあるなら)
また「>=」は「=」も含まれているから50の時点で中の処理に入りますよね?
私何か勘違いしてるかな?
引用返信 編集キー/
■16982 / inTopicNo.11)  Re[7]: テキストボックスなどからのユーザーの入力について
□投稿者/ επιστημη (931回)-(2008/04/14(Mon) 17:43:34)
επιστημη さんの Web サイト
再現できません。

     private int count;

     // STARTボタン
     private void button1_Click(object sender, EventArgs e) {
       count = 0;
       timer1.Enabled = true;
     }

     // TIMEOUTイベント
     private void timer1_Tick(object sender, EventArgs e) {
       int limit = int.Parse(textBox1.Text);
       if ( count >= limit ) { // ここで停止
         timer1.Enabled = false;
         count = 0;
       } else { // カウント続行
         ++count;
         label1.Text = count.ToString();
       }
     }

引用返信 編集キー/
■16983 / inTopicNo.12)  Re[4]: テキストボックスなどからのユーザーの入力について
□投稿者/ mari (23回)-(2008/04/14(Mon) 18:08:23)
No16981 (癒耶 さん) に返信
> 2008/04/14(Mon) 17:41:34 編集(投稿者)
> 2008/04/14(Mon) 17:40:19 編集(投稿者)
>
> ■No16970 (まどか さん) に返信
> >>textBox3.Text = "" + counter.ToString();
>>
>>この行が眼中に無いということは、とにかく型ですよ、型。
>>数値(1)と文字("1")についてしっかり理解してください。
>>
> Timer1とTimer3があるけど同じものです?
> 0から再カウントしてしまうという事は
> 一度
> timer1.Enabled = false;
> counter = 0;
> この処理を通り、ループを抜けた後に
> どこか別の部分でまたTimerが動き出すような処理が入っている可能性はないでしょうか?
>
> >">="はcounterの数字がnumの数字より大きい場合だからcounterが50になったときnumは51
> numの数字までカウントするものなら
> numは常に50では(50と入力してあるなら)
> また「>=」は「=」も含まれているから50の時点で中の処理に入りますよね?
> 私何か勘違いしてるかな?

private void timer3_Tick(object sender, EventArgs e)でtimer3_Tickなのにtimer3.Enabled = false;と書かれてなくtimer1.Enabled = false;と書いてました。
自分のミスです・・・
これでちゃんとテキストボックス1に入力した数字までカウントし止まってくれました。

timer.Intervalの各指定スピードが無効になり1秒間隔でしか動かない←の原因がまた解決できてません・・・

引用返信 編集キー/
■16986 / inTopicNo.13)  Re[5]: テキストボックスなどからのユーザーの入力について
□投稿者/ mari (24回)-(2008/04/14(Mon) 20:07:04)
No16983 (mari さん) に返信
> ■No16981 (癒耶 さん) に返信
>>2008/04/14(Mon) 17:41:34 編集(投稿者)
>>2008/04/14(Mon) 17:40:19 編集(投稿者)
>>
>>■No16970 (まどか さん) に返信
>>>>textBox3.Text = "" + counter.ToString();
> >>
> >>この行が眼中に無いということは、とにかく型ですよ、型。
> >>数値(1)と文字("1")についてしっかり理解してください。
> >>
>>Timer1とTimer3があるけど同じものです?
>>0から再カウントしてしまうという事は
>>一度
>>timer1.Enabled = false;
>>counter = 0;
>>この処理を通り、ループを抜けた後に
>>どこか別の部分でまたTimerが動き出すような処理が入っている可能性はないでしょうか?
>>
>>>">="はcounterの数字がnumの数字より大きい場合だからcounterが50になったときnumは51
>>numの数字までカウントするものなら
>>numは常に50では(50と入力してあるなら)
>>また「>=」は「=」も含まれているから50の時点で中の処理に入りますよね?
>>私何か勘違いしてるかな?
>
> private void timer3_Tick(object sender, EventArgs e)でtimer3_Tickなのにtimer3.Enabled = false;と書かれてなくtimer1.Enabled = false;と書いてました。
> 自分のミスです・・・
> これでちゃんとテキストボックス1に入力した数字までカウントし止まってくれました。
>
> timer.Intervalの各指定スピードが無効になり1秒間隔でしか動かない←の原因がまた解決できてません・・・

private int counter;を
private int counter1;
private int counter2;
private int counter3;
として
string str = textBox1.Text;
int num = int.Parse(str);

if (counter1 >= (num))
{
// Exit loop code.
timer1.Enabled = false;
counter1 = 0;
}
else
{
counter1 = counter1 + 1;
textBox2.Text = counter1.ToString();
}
と書いてtimer.Intervalの各指定スピードが無効になり1秒間隔でしか動かないはほぼ解決しました。

正常に動いたり動かなかったりします・・・
カウント数は
private int counter1;
private int counter2;
private int counter3;
それぞれちゃんと0から指定した数字までカウントしてます。(混合カウントしない)



引用返信 編集キー/
■16989 / inTopicNo.14)  Re[6]: テキストボックスなどからのユーザーの入力について
□投稿者/ mari (25回)-(2008/04/14(Mon) 21:25:33)
No16986 (mari さん) に返信
> ■No16983 (mari さん) に返信
>>■No16981 (癒耶 さん) に返信
> >>2008/04/14(Mon) 17:41:34 編集(投稿者)
> >>2008/04/14(Mon) 17:40:19 編集(投稿者)
> >>
> >>■No16970 (まどか さん) に返信
> >>>>textBox3.Text = "" + counter.ToString();
>>>>
>>>>この行が眼中に無いということは、とにかく型ですよ、型。
>>>>数値(1)と文字("1")についてしっかり理解してください。
>>>>
> >>Timer1とTimer3があるけど同じものです?
> >>0から再カウントしてしまうという事は
> >>一度
> >>timer1.Enabled = false;
> >>counter = 0;
> >>この処理を通り、ループを抜けた後に
> >>どこか別の部分でまたTimerが動き出すような処理が入っている可能性はないでしょうか?
> >>
> >>>">="はcounterの数字がnumの数字より大きい場合だからcounterが50になったときnumは51
> >>numの数字までカウントするものなら
> >>numは常に50では(50と入力してあるなら)
> >>また「>=」は「=」も含まれているから50の時点で中の処理に入りますよね?
> >>私何か勘違いしてるかな?
>>
>>private void timer3_Tick(object sender, EventArgs e)でtimer3_Tickなのにtimer3.Enabled = false;と書かれてなくtimer1.Enabled = false;と書いてました。
>>自分のミスです・・・
>>これでちゃんとテキストボックス1に入力した数字までカウントし止まってくれました。
>>
>>timer.Intervalの各指定スピードが無効になり1秒間隔でしか動かない←の原因がまた解決できてません・・・
>
> private int counter;を
> private int counter1;
> private int counter2;
> private int counter3;
> として
> string str = textBox1.Text;
> int num = int.Parse(str);
>
> if (counter1 >= (num))
> {
> // Exit loop code.
> timer1.Enabled = false;
> counter1 = 0;
> }
> else
> {
> counter1 = counter1 + 1;
> textBox2.Text = counter1.ToString();
> }
> と書いてtimer.Intervalの各指定スピードが無効になり1秒間隔でしか動かないはほぼ解決しました。
>
> 正常に動いたり動かなかったりします・・・
> カウント数は
> private int counter1;
> private int counter2;
> private int counter3;
> それぞれちゃんと0から指定した数字までカウントしてます。(混合カウントしない)
>

原因がわかりました・・・
numericUpDownコントロールを3つとも同じカウンタに当ててました・・・

これで問題はすべて解決しました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -