• ベストアンサー

VC++2005 テキストボックス

現在、VC++2005でプログラムをしているのがどうしてもエラーが出てしまうのでわかる方がいればよろしくお願いします。 プログラムとしては、テキストボックスの中のデータが空だった場合にはある処理を行うというものを作っています。 プログラム本体は、 if(textBox1==NULL) { label1->Text="データがありません\n"; } です。 エラーメッセージは、 エラー 1 error C2446: '==' : 'int' 型から'System::Windows::Forms::TextBox ^' 型への変換ができません。 というメッセージが出てしまいます。 このエラーは、型変換が違っているということのエラーなのでしょうか?どのように修正するとよいのでしょうか? 説明などがとても下手かもしれませんが、よろしくお願いします。

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

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

 こんばんは。  これでは駄目でしょうか? if(textBox1->Text == System::String::Empty) { //do something label1->Text = "データがありません\n"; }

xxmajimaji
質問者

お礼

ありがとうございました。 きちんと動きました。

その他の回答 (3)

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.3

お使いのコードを分解してどこが意図通りに動作しないのかを検証しましょう // テキストボックスのデータを取得 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は失敗します

xxmajimaji
質問者

お礼

ありがとうございます。 正常に動きました。

  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.2

if(textBox1==NULL) ↓ if(textBox1->Text=="") ではダメか? 「データが空」つまり「文字列の長さが0」つまり「文字列が""」ってのは「NULL」とは違う。 NULLとは違うのだよNULLとはッ

xxmajimaji
質問者

お礼

ありがとうございます。 それは一応試してみたのですがダメでした。

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

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; } などといった具合にしましょう # 字下げには 全角スペースを使っていますので行頭のスペースを置換してください

xxmajimaji
質問者

補足

教えていただきありがとうございます。 そのプログラムなどを使いながらビルドを行ったのですが、データが入っているときも入力してくださいというようなメッセージが表示されてしまうのですがどうしたらよいのでしょうか?

関連するQ&A