- ベストアンサー
VC++2005 テキストボックス
現在、VC++2005でプログラムをしているのがどうしてもエラーが出てしまうのでわかる方がいればよろしくお願いします。 プログラムとしては、テキストボックスの中のデータが空だった場合にはある処理を行うというものを作っています。 プログラム本体は、 if(textBox1==NULL) { label1->Text="データがありません\n"; } です。 エラーメッセージは、 エラー 1 error C2446: '==' : 'int' 型から'System::Windows::Forms::TextBox ^' 型への変換ができません。 というメッセージが出てしまいます。 このエラーは、型変換が違っているということのエラーなのでしょうか?どのように修正するとよいのでしょうか? 説明などがとても下手かもしれませんが、よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 これでは駄目でしょうか? if(textBox1->Text == System::String::Empty) { //do something label1->Text = "データがありません\n"; }
その他の回答 (3)
- redfox63
- ベストアンサー率71% (1325/1856)
お使いのコードを分解してどこが意図通りに動作しないのかを検証しましょう // テキストボックスのデータを取得 String^ ss = textBox1->Text; int nData = 0; // 取得した文字列が空の場合 または Int32への変換が出来ない場合 // メッセージボックスを表示する if ( String::IsNullOrEmpty(ss) || Int32::TryParse( ss, nData ) == false ) { MessageBox::Show( L"数値を入力してください" ); textBox1->Focus(); return; } といった具合なら String^ ss = textBox1->Text; MessagBox::Show( ss, L"テキストボックスの値を取得" ); int nData = 0; if ( String::IsNullOrEmpty(ss) ) { MessageBox::Show( L"空白は許されません" ); textBox1->Focus(); return; } if ( Int32::TryParse( ss, nData ) == false ) { MessageBox::Show( L"数値を入力してください" ); textBox1->Focus(); return; } といった具合にして見ましょう 入力された文字が全角数字の場合はTryParseは失敗します
お礼
ありがとうございます。 正常に動きました。
- chie65536
- ベストアンサー率41% (2512/6032)
if(textBox1==NULL) ↓ if(textBox1->Text=="") ではダメか? 「データが空」つまり「文字列の長さが0」つまり「文字列が""」ってのは「NULL」とは違う。 NULLとは違うのだよNULLとはッ
お礼
ありがとうございます。 それは一応試してみたのですがダメでした。
- redfox63
- ベストアンサー率71% (1325/1856)
C++/CLIで組んでいるのですね # プログラミングスタイルも記述しておきましょう TextBoxオブジェクトから直接 int型との比較は出来ないので TextBoxのTextプロパティから設定値を引き出してこれを int型へ変換し比較しましょう TextBoオブジェクトの変数がtextBox1であるなら // テキストボックスのデータを取得 String^ ss = textBox1->Text; int nData = 0; // 取得した文字列が空の場合 または Int32への変換が出来ない場合 // メッセージボックスを表示する if ( String::IsNullOrEmpty(ss) || Int32::TryParse( ss, nData ) == false ) { MessageBox::Show( L"数値を入力してください" ); textBox1->Focus(); return; } などといった具合にしましょう # 字下げには 全角スペースを使っていますので行頭のスペースを置換してください
補足
教えていただきありがとうございます。 そのプログラムなどを使いながらビルドを行ったのですが、データが入っているときも入力してくださいというようなメッセージが表示されてしまうのですがどうしたらよいのでしょうか?
お礼
ありがとうございました。 きちんと動きました。