ページ 11

コンボボックスの文字列追加方法について

Posted: 2014年9月20日(土) 17:57
by happy1124
初投稿です。色々ぐぐってみましたが解決できずじまいなので投稿させていただきます。

windows7のVisual Studio Express 2012のC++のCLRプロジェクトを使用しております。

接続されているドライブのドライブレターをコンボボックスに追加するソースを組もうとしております。
「c:\」と表示したいのですが、「67:\」のようにしか追加表示できてません。

以下ソースの、「Dletter = (i+'A')+":\\";」のところがおかしいはずなのはわかっていますが
どうしたらいいのかよくわからないです。
それともそもそもString^型で追加しようとしているのが、おかしいのでしょうか?
「Dletter = (i+'A')+":\\";」のところの修正方法、もしくは他の方法でも構わないので
ご教授頂ければ幸いです

コード:

 
private: System::Void MyForm_Load(System::Object^  sender, System::EventArgs^  e) {
 			 DWORD drive;
			 DWORD dwBits;
			 UCHAR i;
			 String^ Dletter;

			 comboBox1->SelectedIndex=0;
			 drive=GetLogicalDrives();
			 dwBits = 1;
 			 for(i = 0; i <= 26; i++)
			 {
				if(dwBits & drive)
				{
					Dletter = (i+'A')+":\\";
					comboBox2->Items->Add(Dletter);
				}
				dwBits <<= 1;
			 }
			 comboBox2->SelectedIndex=0;
		 }

Re: コンボボックスの文字列追加方法について

Posted: 2014年9月20日(土) 18:08
by softya(ソフト屋)
お先に確認したいのですが、C++のCLRでのフォームアプリケーションは今後メジャーになることはなくフェードアウトする運命ということを理解した上で勉強されているって事でよろしでしょうか? C++2012からは新規作成がメニューから消えていることもからもわかると思いますが。

Re: コンボボックスの文字列追加方法について

Posted: 2014年9月20日(土) 18:27
by happy1124
はい、今更2012&Expressを使っているところからして、環境にしばりがありまして。。。
ExpressじゃなければたぶんCLRプロジェクトも使ってないと思います。
なので当面2012&Expressを使うと思います

Re: コンボボックスの文字列追加方法について

Posted: 2014年9月20日(土) 20:40
by softya(ソフト屋)
2重投稿してしまったので削除。

Re: コンボボックスの文字列追加方法について

Posted: 2014年9月20日(土) 20:42
by softya(ソフト屋)
情報が少なくて、今後のバージョンなアップなどいろいろ差し障りが出るかもしれないことを理解されていれば問題無いです。
さて.NETに詳しいわけではないですが、(i+'A')がちゃんと文字列になっていないと思われます。
ただ、私もやったことがないので確証がありませんが、この辺りを使えばよいのかもしれません。
「Convert.ToChar メソッド (System)」
http://msdn.microsoft.com/ja-jp/library ... .110).aspx
更にToStringすれば晴れて文字列化です。これより楽な方法があるのかも知れませんが。

Re: コンボボックスの文字列追加方法について

Posted: 2014年9月20日(土) 21:08
by happy1124
Dletter = Convert::ToChar((i+'A'))+":\\";
とすることで対応出来ました。ありがとうございます。
ToStringはいらなかったようです。

とりあえずとある調査のために使用するアプリを作りたいだけなので
今はこれでいいですが、本格的にソフト開発するようになったらまた
Expressじゃなくてちゃんと有料版も使えるように働きかけるつもりです。
ご協力ありがとうございました。