1 名前:デフォルトの名無しさん [2008/01/11(金) 15:41:00 ] このスレッドは 「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。 ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、 勇気をもって書き込んでください。 内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。 ふらっとC#,C♯,C#(初心者用) Part22 pc11.2ch.net/test/read.cgi/tech/1197802312/
174 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 19:22:07 ] >>171 丁寧にありがとうございます。 >>セットさせたい項目をpublicなプロパティで返すようにする というのがいまいちわかりません。 ソース載せます。 //form1(Main) public partial class Main : Form { public Main(){ InitializeComponent(); } private void button_add_Click(object sender, EventArgs e) { Addition add = new Addition(); add.ShowDialog(); } } //form2(Additon) public partial class Addition : Form { public Addition() { InitializeComponent(); } private void button_OK_Click(object sender, EventArgs e) { //MessageBox.Show(textBox_name.Text+"\n"+ comboBox1.Text+"\n"+textBox1.Text); } }
175 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 19:24:50 ] public partial class Addition : Form { public string 結果 { return textBox_name.Text+"\n"+ comboBox1.Text+"\n"+textBox1.Text; } }
176 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 19:24:57 ] >>173 publicにしたら、Form1.csの補完機能からform2のコントロールが見えました! ありがとうございます!
177 名前:175 mailto:sage [2008/01/15(火) 19:25:16 ] ミス public string 結果 { get { return textBox_name.Text+"\n"+ comboBox1.Text+"\n"+textBox1.Text; } }
178 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 19:37:02 ] はじめまして。 まことに簡単な質問で恐縮なのですが、DataGridViewのculomnsのプロパティで オートインクリメントをしたい列があるのですが、どうすればよいでしょうか? よろしくお願いいたします。
179 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 20:33:34 ] >>169 な、何を言ってるのかね?
180 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 20:53:51 ] >>169 ただファイルを開くとかくらいなら、 ダブルクォーテーションがあっても問題なかった気がするけど。
181 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 10:43:24 ] >>169 dos窓でドロップやったことないのか? スペース含むパス取り込むためにデフォルトで""囲みになるのが普通だよー
182 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 11:16:56 ] 問題あるならTrimでもすりゃいいんでは?
183 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 11:40:31 ] C#でExcelを操作しようと調べているんですが、断片的な 情報しか見つける事ができませんでした。 何か参考になる本やサイトなど知っていたら紹介して貰えませんか?
184 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 12:33:03 ] COM Excel C# でググるとか
185 名前:169 mailto:sage [2008/01/16(水) 13:21:32 ] >>180 そうだと思ったんですが、パスを変数に格納した後にフォルダの存在確認を>>170 の下の方で 行っているんですが、""つきのパスだと存在しないよって言われちゃうんですよ。 >>182 調べてみます
186 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 13:51:48 ] つか、D&Dできるの始めて知ったぜ。いつもいちいちコピペしてた。
187 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 14:00:08 ] Vistaでできないな、、、XPをリモートデスクトップで出してみたらこっちではD&Dできるが・・・
188 名前:デフォルトの名無しさん [2008/01/16(水) 14:38:39 ] VS2005でC#の勉強をしています。 質問なのですが、テキストファイルに 1 200 2 356 3 1250 4 870 5 692 といったような行列があり、それをC#のプログラムで読み込み 1000以上の値を持つものだけピックアップすることはできるでしょうか。 ピックアップした後に計算もしたいので、変数にその値を代入したいのです。 よろしくお願いします。
189 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 15:00:03 ] StreamReaderとかで開いて ReadLineして パースすればいい
190 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 15:01:21 ] var hoge = from line in File.ReadAllLines(@"...") from str in line.Split(' ') let value = Int32.Parse(str) where value >= 1000 select value;
191 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 15:05:51 ] VS2005や言うてるやろスカタン
192 名前:169 mailto:sage [2008/01/16(水) 15:46:16 ] >>188 StreamReader sr = new StreamReader(filepath); List<int[]> list = new List<int[]>(); do { string str = sr.ReadLine(); if (str != "") { string[] ary = str.Split(new char[] { ' ' }); int n1 = int.Parse(ary[0]); int n2 = int.Parse(ary[1]); if (n2 > 999) { list.Add(new int[] { n1, n2 }); } } } while (sr.Peek() != -1);
193 名前:169 mailto:sage [2008/01/16(水) 15:51:20 ] どうやら手動で削除するほかなさそうですね。 splitを使って面倒なことをしてましたが、 Trim(もしくはReplaceでも可)を使って少しコードがすっきりしました。 ありがとうございました。 Console.WriteLine("入力フォルダパスを入力して下さい"); Input = Console.ReadLine().Trim(new char[] { '\"' }); Console.WriteLine("出力フォルダパスを入力して下さい"); Output = Console.ReadLine().Trim(new char[] { '\"' }); if (Directory.Exists(Input) & Directory.Exists(Output)) { Console.WriteLine("valid"); Console.ReadLine(); } else { Console.WriteLine("入力したフォルダパスが不正です"); Console.ReadLine(); }
194 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 21:00:02 ] オマイラそれ絶対なんか間違ってるだろwww
195 名前:デフォルトの名無しさん [2008/01/16(水) 21:20:34 ] すみません、教えてください。 VS2005 .netでプログラムしていますが、HOMEPATHの取得法はあるのでしょうか? もしあるならば方法をご教授ください。 よろしくお願いします
196 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 21:23:02 ] 994 名前:デフォルトの名無しさん[sage] 投稿日:2008/01/11(金) 12:14:20 Environment.GetEnvironmentVariable( "HOMEPATH" );
197 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 21:27:22 ] \r\n と \n の差がわからないんだが どっちも改行するわけだが動違うの?
198 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 21:31:50 ] >>197 サイズが違う。
199 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 21:38:14 ] おおまかにはOSによって改行コードが違う。 Unix:\n Windows:\r\n Mac:\r ってか基本だと思うけど。
200 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 21:40:24 ] >>199 トンクス Cとかだと\nが改行だから\r\nって何かと思ってたんだが Windowsなら\r\nでいいってことでつね
201 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 21:46:35 ] >>200 Cは、テキストモードだと、\nは\r\nに変換される。(winでは)
202 名前:デフォルトの名無しさん [2008/01/16(水) 21:52:10 ] >>196 ありがとうございました。無事解決です
203 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 22:09:14 ] >>200 どうでもいい話ではあるんだが意味的に言うとWinがたぶん正しい なのでhttpとかも\r\n。この辺はCRとLFを調べてみれ
204 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 22:28:13 ] むかしタイプライターというものがあってのう
205 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 22:57:06 ] LFだけってのはおかしいと思う。
206 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 23:00:21 ] それ言ったらCRだけなのもおかしい
207 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 23:16:31 ] CRってキャリッジリターンなのは聞いたことあるけど、LFってなんて言うの? ラインフィニッシュ?
208 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 23:20:38 ] ラインフィード
209 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 23:21:27 ] CR=キャリッジリターン=キャリッジ(紙を左右に動かす装置)を初期位置に戻すこと。 LF=ラインフィード=紙送り。
210 名前:デフォルトの名無しさん [2008/01/17(木) 00:53:22 ] C#相談室から誘導されてきました。 たとえば、こういうコードがあったとします。 if (Result == null) { transaction.Rollback(); MessageBox.Show("エラー0です。"); return false; } if ((int)Result == 1) { transaction.Rollback(); MessageBox.Show("エラー1です。"); return false; } if ((int)Result == 2) { transaction.Rollback(); MessageBox.Show("エラー2です。"); return false; } transaction.Commit(); return true; これをスッキリ表記するのに何かいい手段はないですかねぇ…。 throwで例外起こしてtry〜catchってのもスッキリしなくて…
211 名前:デフォルトの名無しさん [2008/01/17(木) 01:08:54 ] C#でLispみたいなカッコイイプログラミングするにはどうすればいいの?
212 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 01:13:40 ] F#をダウンロードします
213 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 01:20:46 ] そして卵を御飯にかけます
214 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 01:27:18 ] >>210 result = (Result == null) ? 0 : (int)Result; switch(result){ case 0: case 1: case 2: transaction.Rollback(); string temp = "エラー" + result + "です。"; MessageBox.Show(temp); return false; break; default: transaction.Commit(); return true; break; }
215 名前:デフォルトの名無しさん [2008/01/17(木) 01:39:34 ] xmlファイルをphpのsimple xmlみたいに簡単に扱える方法はないのでしょうか?
216 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 09:07:05 ] C#のswitchのcaseは絶対に下に降りられないと思ってたが、何も書かなければ並べられるのか。 しかし不必要なbreakを強要されるのが面倒くさいな。 Cの文法に慣れてる人がバグを作らないようにってことなのかな。
217 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 09:10:59 ] returnの下のbreakいらんだろ
218 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 09:22:09 ] いらん以前に到達できないコードな警告出たりしないかそれ確か
219 名前:デフォルトの名無しさん [2008/01/17(木) 13:16:16 ] 構造体のマーシャリングについて質問いいっすか? 自分よく分かってないんですが typedef struct tagDESKBANDINFO { DWORD dwMask; POINTL ptMinSize; POINTL ptMaxSize; POINTL ptIntegral; POINTL ptActual; WCHAR wszTitle[256]; DWORD dwModeFlags; COLORREF crBkgnd; } DESKBANDINFO; の WCHAR wszTitle[256];って [StructLayout(LayoutKind.Sequential,CharSet=CharSet.Unicode)] にした上で [MarshalAs(UnmanagedType.ByValTStr, SizeConst=256)] string wszTitle; じゃないんですか? www.pinvoke.net/default.aspx/Structures/DESKBANDINFO.html とかだと255になってるんですがどっちが正しいんでしょう?
220 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 13:16:55 ] 試してみたがbreakいらんな
221 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 13:20:25 ] null終端とやらの関係かなとか思ったんですが msdn2.microsoft.com/ja-jp/library/795sy883 (VS.80).aspx 文字列のマーシャリングだと TCHAR szCSDVersion[ 128 ]; ↓ [ MarshalAs( UnmanagedType.ByValTStr, SizeConst=128 )] String versionString; になってるしワケワカリマセン
222 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 13:20:51 ] >>219 256であってる
223 名前:219 mailto:sage [2008/01/17(木) 13:25:09 ] >>222 ありがとうございます。 まじすか。 PInvoke.netのまま使ってると2バイトずつ上にずれてるってことですか?
224 名前:219 mailto:sage [2008/01/17(木) 13:30:11 ] ありゃMarshal.SizeOfを見たらどっちも同じ さらにワケワカメ アラインとかPackとかのせいですか? ということは実害なし?
225 名前:デフォルトの名無しさん [2008/01/17(木) 18:06:12 ] GTKについてわからないところがあるのですが、詳しい方いらっしゃいますか?
226 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 18:08:57 ] >>225 C#でGTKといったらMono? Monoスレに行かないといないかもしれない。
227 名前:デフォルトの名無しさん [2008/01/17(木) 18:11:31 ] そうですか…行ってみます。 すみません、ありがとうございました。
228 名前:デフォルトの名無しさん [2008/01/18(金) 01:31:53 ] VC#2008関連の書籍って出ないの?
229 名前:210 mailto:sage [2008/01/18(金) 02:17:47 ] >214 ありがとうございます。 これで試してみます。
230 名前:デフォルトの名無しさん [2008/01/18(金) 03:32:28 ] C#でxmlファイルをphpのsimple xmlみたいに簡単に扱える方法はないのでしょうか?
231 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 03:46:58 ] visual studio 2005を使ってます。 pictureboxに表示する画像のリソースを指定するときは this***.Image = Properties.Resources.abc; のようにしますが(というかVSが勝手にやってくれますが) これを文字列型の変数を使ってやることはできないでしょうか? string TMP; TMP = "abc"; として5行目と同じように指定したいのです。
232 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 06:06:54 ] リフレクション使えばできると思うが、やるほどの価値はないと思う。
233 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 07:02:54 ] ResourceManager.GetObject使えばできるけど厳密な型指定できないよ
234 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 07:27:36 ] 何をしたいのかを書けば、もっといい解決法があるかもよ
235 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 09:13:14 ] >>232 >>234 リソース名が連続した英数字なので、for文で数十の文字列の配列を作ったんですが、それをリソース名の指定に使う方法が分からなくて・・・ 手動でやるよりはるかに効率的だと思うので、できればさわりだけでも簡単に教えてもらえればと >>233 では、結局出来ないということになるんでしょうか・・・?
236 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 09:21:16 ] Properties.Resources.abc;の実装がどうなってるかみなよ。
237 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 10:18:33 ] >>230 XLinqでも使ってみれば
238 名前:188 mailto:sage [2008/01/18(金) 11:19:39 ] 遅くなりましたが無事解決しました! ありがとうございました。
239 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 15:01:23 ] byte[] b1 = new byte[] {1,2,3,4}; byte[] b2 = new byte[] {1,2,3,4}; があったとして、2つの配列の内容が全て等しいか簡単に調べる方法ってないですか? b1 == b2; も b1.Equals(b2); もfalseになります(´・ω・) やっぱいちいちforeachで回さないとダメですか?
240 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 15:04:53 ] うむ Array.Equals は object.Equals と変わらんからな
241 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 15:06:27 ] ぶ、C# 配列 比較 で検索したらすぐ見つかりました。 出来ないみたいですねorz お騒がせしました。
242 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 15:09:45 ] 継承クラスで共通のメソッド実行時 親クラスで共通の処理をさせたいのですがどうすればいいでしょうか うまく説明できないんですがポリモーフィズム的なメソッドの共通処理を 継承クラスでは意識せずに親で処理させたいのですが・・・
243 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 15:24:50 ] //親 virtual void Hoge() { ... } //子 override void Hoge() { ... base.Hoge(); } じゃあかんのん?
244 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 15:27:51 ] >>243 やっぱりそうなりますかね base.Hoge()の処理は必ずして欲しいのに base.Hoge();を付け忘れちゃったりするものですから
245 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 16:21:12 ] Hoge は virtual じゃなくして、HogeOverridable を virtual にして Hoge のなかで HogeOverridable を呼ぶ ただし派生クラスで基底クラスの処理の呼び出す位置を変更できないデメリットもある
246 名前:231 mailto:sage [2008/01/18(金) 19:49:57 ] >>231 ですが www.atmarkit.co.jp/fdotnet/dotnettips/220resources3/resources3.html を参考に Assembly thisExe = Assembly.GetExecutingAssembly(); ResourceManager TMPres = new ResourceManager( "***.Properties.Resources", thisExe); xxx = (Image)TMPres.GetObject("abc"); とやったらできました。
247 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 20:10:42 ] Image img = (Image)Properties.Resources.ResourceManager.GetObject( "hoge" );
248 名前:デフォルトの名無しさん [2008/01/18(金) 23:19:52 ] VS2008を使っていますが、 FormのFormClosingイベントを捕らえて フォームを閉じることを中止するにはどうすればいいのでしょうか? 以下のように書いてもだめでした。 private void MainForm_FormClosing(object sender, FormClosingEventArgs e) { DialogResult result = MessageBox.Show("変更を保存しますか?", "確認", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question); if (result == DialogResult.Yes) { this.menuSaveProject_Click(sender, e); } else if (result == DialogResult.Cancel) { return; // ←これ } } よろしくお願いいたします。
249 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 23:26:03 ] 引数調べれ
250 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 23:28:22 ] e.Cansel = true; とやればいいようですね(´・ω・`) 今までeなんて無視してました ありがとうございました
251 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 23:29:03 ] ていうかイベントの解説に書いてるよな
252 名前:デフォルトの名無しさん mailto:age [2008/01/19(土) 00:16:31 ] IPAddress[] addrs; があったとして、 この中から特定のIPの項目だけ削除ってどうすればいいんでしょうか。 InteliSenseで見てると addrs.Except(); とかそれっぽいのはあるんですが、いまいち使い方がわかりません・・・
253 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 00:22:22 ] 配列は要素の削除とかできないので作り直し Array.FindAll でもいける
254 名前:252 mailto:sage [2008/01/19(土) 01:08:38 ] >>253 ありがとうございます。やっぱり作り直ししかないんですね(´・ω・) でもFindAllのおかげでさっくりいきました。 ありがとうございました。
255 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 01:23:46 ] List<IPAddress>でいけー
256 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 01:24:22 ] >>254 List<>つかおうぜ
257 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 01:32:56 ] Listって要素の削除は向いてないんじゃない?
258 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 01:43:53 ] ほえ?
259 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 01:45:39 ] >>257
260 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 01:47:58 ] >>257 ( ^ω^)・・・
261 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 02:05:44 ] (^ω^;)⊃ アウアウ!! ⊂ミ⊃ ) / ヽ
262 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 02:47:03 ] またRemoveAll()の流れなのか・・・
263 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 05:04:38 ] 末尾以外の削除は遅いと思うんだけど、大丈夫なわけ?
264 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 05:08:48 ] >>263 実装に因る てか少なくとも配列を使うのよりは高性能に作られているとうれしい(ビクンビクン
265 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 05:10:29 ] >>264 実装見ろよ
266 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 05:55:24 ] 要素の削除と挿入をやるならLinkedListでしょ? ランダムアクセスできないけど。
267 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 06:37:57 ] >>266 > ランダムアクセスできないけど。 それが答えだ。
268 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 09:28:45 ] それは削除にむいてないんじゃなくて、 ランダムアクセスにむいてないだけ。
269 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 09:57:04 ] ある時点のList<T>の内容を配列か何かに保存しておき、その内容に戻すということをしたいのですが、 インスタンスを変えたくない場合は、Clearして一つずつAddし直すしかないのでしょうか?
270 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 09:58:58 ] 要するに、コストの問題だ。 データを参照するより削除と挿入の方が多いならLinkedList だろうし、 頭からforeachしたりインデクスでアクセスする必要があるならList。 目的に応じて使い分ければ済むという当たり前のことだろ。
271 名前:269 mailto:sage [2008/01/19(土) 10:02:53 ] >>269 AddRangeってのが目に入っていませんでした。 ClearしてAddRangeが正解でしょうか。
272 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 10:14:14 ] >>268 ahosugi
273 名前:252 mailto:sage [2008/01/19(土) 10:40:42 ] これは・・・荒らしちゃったかも(・ω・`) なんかごめんなさいです。 配列っていろいろ考えとかないといけないんですね。要素もすくないし、参照より削除や挿入が多いと思うんで、LinkList使ってみようかなと思います。ググってみます。ありがとうございました。
274 名前:252 mailto:sage [2008/01/19(土) 10:43:27 ] LinkedListですね、すいません(汗