1 名前:デフォルトの名無しさん [2008/01/11(金) 15:41:00 ] このスレッドは 「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。 ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、 勇気をもって書き込んでください。 内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。 ふらっとC#,C♯,C#(初心者用) Part22 pc11.2ch.net/test/read.cgi/tech/1197802312/
445 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 13:45:19 ] C#のGetFilesのメソッドについて質問なんですが 複数の拡張子(この場合jpg、gif、png、bmp)で 絞り込むのはどう書いたらいいんでしょう?
446 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 13:46:47 ] >>445 Path.GetExtensionすりゃいいじゃん
447 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 14:13:02 ] >>444 CoClass属性のが実体クラス。
448 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 15:50:08 ] >>445 C#の、ってここはC#スレだ、決まってんだろ、ハゲ 第一C#の、じゃなくて.net frameworkの、だろ、ハゲ それにクラス名まで、書けや、ハゲ Directory.GetFilesならsearchPatternとるオーバーロードがあるっしょ
449 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 16:20:38 ] ツンデレの>>448 に萌えた
450 名前:デフォルトの名無しさん [2008/01/23(水) 17:48:10 ] >>448 揚げ足とるな。ばか!!!!!!!!!!!!!!
451 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 17:50:18 ] >>450 は騙り?
452 名前:デフォルトの名無しさん [2008/01/23(水) 18:47:52 ] トランザクションオブジェクトつくって INSERTとかUPDATEとかしたあと コミットもロールバックもしないとどうなりまつか?
453 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 19:40:34 ] コネクション閉じる時点でロールバック。 だったと思うけどプロバイダに依存しそう。 ものによっては保留状態になるかも。 いや、手動トランザクションなら保留はないかな?
454 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 20:36:10 ] >>453 トンクス SQL Serverだとそんな感じみたいでつね
455 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 23:26:09 ] TabControlのTabPageにいくつかTextBoxとRichTextBoxを配置しました。 あるタイミングで,Text
456 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 23:31:33 ] すいません,誤って途中のものを書き込んでしまいました。 TabControlのTabPageにいくつかTextBoxとRichTextBoxを配置しました。 あるタイミングで,TextBoxとRichTextBoxのレイアウトを Fixed3D から FixedSingle に一気に変更しようとしています。 テキストボックスの変更はできたのですが,同様の方法でRichTextBoxの変更ができませんでした。 以下のようにしたのですが,何が問題でしょうか。 RichTextBox rtb = new RichTextBox(); foreach(Object ctrl in tabControl1.SelectedTab.Controls) { if(ctrl.GetType().Equals(rtb.GetType())) { rtb = (RichTextBox)ctrl; rtb.BorderStyle = BorderStyle.FixedSingle; } }
457 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 23:56:04 ] >>456 ・まず直接フォームのリッチテキストのフィールドで同じことをしてどうなるか 確認しよう。 ・ブレークポイントの使い方を覚えよう。 ・こんなくだらないことでいちいち悩んでるようなら、君才能ないのかも
458 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 00:10:40 ] RichTextBox rtb = new RichTextBox(); こうしてから、 if(ctrl.GetType().Equals(rtb.GetType())) こう判定して、 rtb = (RichTextBox)ctrl; こうやってしまうところに並々ならぬ才能を感じた。 向いてないよ、やっぱり。
459 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 00:19:16 ] なれてないだけ as null
460 名前:456 mailto:sage [2008/01/24(木) 00:24:57 ] >>458 さん ご指導ありがとうございます。 勉強になります。 >>459 さん nullなんですね。 ありがとうございます。 デバッガの使い方も分からず,すいません。 ブレークポイントを指定してBorderStyleを見てみるとちゃんとFixedSingle になっていました。 RichTextBoxはFixedSingleにしても表示が変わりませんでした。 もしかして,そういうものなんですかね。
461 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 00:47:41 ] if(ctrl is TextBox) って,できるんですね...orz
462 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 01:10:50 ] キャストするならctrl as TextBoxとしてnullかどうか見た方がいい。
463 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 01:12:35 ] >>462 ありがとうございます。 459さんのヒントを頂き,そのようにしました。 型判定について全く無知でした。。。
464 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 13:11:02 ] 検討違いなこと言っていたらすみません public static void func(string str1, string str2, bool flag){ 処理 } このような文字列を2つと論理型で1つを引数とする関数を再帰的に呼び出す部分なのですが 今現在作成中のプログラムの中で、この関数による処理がほぼ全てのようなものです なのでこの再帰的にこの関数を呼び出すという部分について何か最適化の方法がないかと探しています 関数内の処理はforeachと.NET内のクラスを利用したものでほぼ埋まっているため そちらに関しては最適化はやりようがないかなと思っています それではよろしくお願いします
465 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 13:21:53 ] >>464 プログラムの概要を教えてもらえんとなんともなぁ そもそも本当に再帰が必要なのかもわからないし
466 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 13:42:20 ] >>465 すみませんでした、書くと長いので概要を str1にはディレクトリへのパスを(こちらをA) str2にはまた別のディレクトリへのパスを(こちらをB)受け取ります。 Bが存在するか確認 A内に存在するファイルを探していきながら、随時B内にA内のファイルを移動していく その後、A内でディレクトリを検索し、無ければ終了、発見した場合 (今現在のstr1とstr2の値が以下だとしたら str1 C:\aaa str2 D:\xxx) A内でディレクトリ検索をして見つけたものが C:\aaa\abcだとすると func("C:\\aaa\\abc", "D:\\xxx\\abc", true) こんな感じで自信を呼び出します つまりBディレクトリ以下にAディレクトリをサブフォルダ内等一切合財移動させるという感じです
467 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 14:49:16 ] 最適化する意味はどこにもないな。 せいぜい再帰やめることで万が一のStackOverflowを回避するぐらい。
468 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 15:06:46 ] 再帰させる必要ないでしょ。 Private Sub moveFile(ByVal a As String, ByVal b As String) Directory.CreateDirectory(b) Dim files() As String = Directory.GetFiles(a, "*.*", SearchOption.AllDirectories) For Each f As String In files Dim newpath As String = f.Replace(a, b) Dim newdir As String = Path.GetDirectoryName(newpath) Directory.CreateDirectory(newdir) File.Move(f, newpath) Next End Sub
469 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 16:22:56 ] なんでVBなんだよ。死ぬほど読みにくいわ 466は書くと長いって書いてるんだから 全部のファイルじゃなくて、何か条件付けがあるんだろ
470 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 16:49:37 ] 手元のマシンには、VBしか入っていないからVBで答えたまで。 なんか条件付けがあるというのならなぜその条件を説明しない。 その条件をこっちで考えろってか? 全部のファイルじゃない? 「一切合財移動させる」と書いてあるだろ。
471 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 16:53:22 ] .netじゃフォルダ移動したら、その下にあるのも一緒に移動しないの?
472 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 18:08:56 ] >>470 スレタイ読んでくれよ・・・
473 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 19:24:41 ] C++の頃に、switch文を嫌ってポリモーフィックを使って対応していた場合(GoFのstateやTemplete Method系?)、 C#にそのまま移植するとキャストやガベコレの為に返って処理が重たくなる事は有りませんか? これから具体例を用意しようと思いますが、2,3時間後になると思うので、 場合によるときは何処が焦点になるか、忠告頂けると助かります。 ちなみにC# 2.0です。ジェネリックの恩恵を受けれると嬉しいのですが。
474 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 19:34:38 ] 参照型→参照型のキャストは無問題 参照型→値型はボクシングが入って遅くなる void Hoge<T> where T : IHogeHoge (T value) { ... } こうすればボクシングは回避できて、インターフェイスメンバも使える メソッドが一つならインターフェイスじゃなくてデリゲートを使うのも流行り
475 名前:474 mailto:sage [2008/01/24(木) 19:35:30 ] 間違えた 値型→参照型はボクシングが入って遅くなる
476 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 19:35:38 ] そこが処理のボトルネックになってるかどうかがまず問題だろ
477 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 19:45:25 ] >476 swichを使いたがる人に人的な問題が有るだけなので、ネックにならない事がわかればすっきりできます。 >474さんのおかげで解決ですけど、私も興味が有るので、もうちょっと面白い話がを集めたいんですけどスレ違ですかね。 私が今書き出したサンプルはデリゲートの方がスマートっぽいので練り直さないと。 void Hoge<T> where T : IHogeHoge (T value) { ... } を有効利用したサンプルを書けてないと足下をすくわれそうだし。
478 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 20:00:11 ] 手段と目的を履き違えていないか?
479 名前:477 mailto:sage [2008/01/24(木) 20:07:17 ] >478 そうですね。 「参照型→参照型のキャストは無問題 」の理由は解ってないし。 >where T : IHogeHoge (T value) { ... } は自分の件では要らない事が、返事を書いてから気づきました。 未だベンチテストとかできる状態では無いのでボトルネックの洗い出しはできません。 目安としてはポリモーフィックされたupdate()関数は一秒間に180回ぐらい行われて、 satateが切り替わるのは2,3秒に一回あるか無いかです。 それでupdate()関数内に switchが有るのは嫌だなと思う次第です。
480 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 20:42:01 ] C# を使うことそれ自体がボトルネックだとおもいまーす
481 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 20:53:24 ] switch使ったっていいと思うが Enumってswitch用じゃね?
482 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 21:11:10 ] 問題のサンプルソースできた。 100行ある。ここに貼るとしたらどうしたら良い?
483 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 21:27:57 ] (´・ω・`)しらんがな
484 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 21:30:45 ] お好きにどうぞ ttp://zero0.x0.com/mc00/upload.php
485 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 21:32:37 ] ttp://www.uploda.net/cgi/uploader1/index.php?file_id=0000286835.udn オリジナルのファイル名でDLすると良いみたい。 かなり汚いけど、これのswitch版を作ってみる。
486 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 21:32:53 ] 一秒間に180回なら全く気にする必要ないだろ
487 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 21:44:26 ] stringの連結とかやってる時点で無意味だろ
488 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 21:52:36 ] switch有りのソース ttp://www.uploda.net/cgi/uploader1/index.php?file_id=0000286840.udn 結果 switch無し 117261 switch有り 114267 switchの方が良かった。\(^o^)/ おまえらさー、 これ信じて本当に大丈夫? >487 良い事言った。
489 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 21:57:23 ] テキスト連結を削除して試したら両方15ms以下で終わったよ
490 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 22:03:37 ] >489 LinkedListの大きさを20000にして、string xをint xにして只の足し算にした。 switch無し 35928 switch 21836 C#のキャストってやっぱり痛いんだな。
491 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 22:33:24 ] インライン展開されてるみたい [MethodImpl(MethodImplOptions.NoInlining)]をswitch版のupdateに付けてみ
492 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 22:51:29 ] つけては見ましたけど、特に変わらなかったです。 21600ぐらい。 --------- using System.Runtime.CompilerServices; --中略--- [MethodImpl(MethodImplOptions.NoInlining)] public void update() { switch (this.state) ----- UMLやDPを使って設計した方が遅くなるってのはC#ユーザーなら通らされる道なんでしょうね。 キャストやガベコレの世界ってこうなっちゃうんだな。 UMLは概念?だかで実装はswitch。
493 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 23:10:11 ] 間違えた インライン展開抑制でこっちで効果があったのはFunc1updateとFunc2updateの方。差がかなり小さくなった。 まあつきつめたらswitchの方が速いのは当たり前だけどそんなことに意味があるかどうかの方が大事
494 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 23:42:57 ] そりゃそんな感じの作りならswitchのが効率いいだろうし 3パターンじゃなおさらswitch有利だろうけど だからどうしたってレベルの話だな。 そのレベルでパフォーマンス重視ならC#なんざ使うのが間違い。 まあ大抵はこんなレベルの差はどうでもいい。 普通は処理そのものがもっとずっと重いしな。
495 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 23:53:04 ] でどこでキャストとガベコレが関係してるわけ?
496 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 23:56:41 ] まったく関係ないw switchの方が最適化されて有利っていうだけのこと
497 名前:464 mailto:sage [2008/01/24(木) 23:57:54 ] レスくださった方、ありがとうございます 最適化の意味がないというのがいまいちピンと来ませんでしたが 少し説明不足なところがありました。 関数内の処理をどうこうしたいのではなく、関数に引数を渡す部分に関して 何か速度を上げるのに繋がる手法のようなものがあれば・・・と思ってのことでした なので検討違いかもしれないと今でも思っていますorz 再帰処理がいらないという意見がありましたが、私自身の力量ではこれで全力でして これ自体アドバイス貰いながらの完成だったりします。 どんどんと階層を深く辿るにはどうしてもこれ以外の方法が思いつきませんでした
498 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 00:02:47 ] >494 >普通は処理そのものがもっとずっと重いしな。 テキスト連結 117261-114267= 2994 足し算 35928- 21836= 14092 そうですね。 >495 どう関係しているか解らないので、適当です。 C++のポインタとキャストならこうは成らないのでは? switch無しは、何回キャストしているか把握してないし。 ガベコレとauto pointerを勘違いしているかも、 >495が関係ないと言うなら、もっとましなソースになるかもしれませんね。
499 名前:498 mailto:sage [2008/01/25(金) 00:05:31 ] >496 今見た。
500 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 00:06:08 ] >>497 >最適化の意味がない どう見てもディスクIOの方が圧倒的に重いからじゃね
501 名前:497 mailto:sage [2008/01/25(金) 00:12:12 ] >>500 なるほど、確かにorz 少しでもと思ったんですが厳しそうですね ありがとうございました
502 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 00:17:10 ] >>501 IOって面で工夫するとしたら 文字列で渡さずにDirectoryInfoを渡すようにしたらいいのでは
503 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 01:31:02 ] インラインとか書かれてるのをみると 脳内で淫乱に変換される漏れの頭を何とかしてください
504 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 04:51:44 ] PropertyGridで、uint型の配列を展開したとき、数値を16進数で表示するには どうしたらいいのでしょうか。
505 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 07:57:25 ] 頑張るのならば ArrayConverter を真似して実装してから uint[] 型のプロパティに TypeConverter 属性で実装したのをつける ArrayConverter の内部クラスが private なので面倒 頑張らないのならば [TypeConverter(tyeof(UInt32HexConverter))] struct UInt32Hex{ public uint Value; } とでもして Uint32HexConverter をお手軽に実装してから UInt32Hex の配列を使う
506 名前:504 mailto:sage [2008/01/25(金) 09:13:17 ] >>505 ありがとうございます。 とりあえず、頑張らない方向でやってみます…。
507 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 09:57:14 ] がんばろうぜ… いやまあどうでもいいんだけど
508 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 10:17:29 ] XMLコメントを書くと メソッド自体とパラメータのコメントはカーソルを合わせたり、Ctrl+K,Pとかすれば表示されますが 戻り値の/// <returns>xxxx</returns>に書いたものは どうすれば表示されるのでしょうか? あとデバッガでメソッドの戻り値が何になったのかを そのメソッド内で見ることは出来ないのでしょうか? バージョンは2008です
509 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 11:33:12 ] >>323 VC# 2008 Express使ってて思ったのは、 クイックウォッチが使えないこと。 ブレークポイントからステップインして処理を追っていくときに、 その時点における式の評価ができるのは結構便利なんだよな。 それ以外では全く不満はないので、それだけの為にVS2005Proに戻そうとまでは思わんね。 VS2008Pro、アップグレード版の値段によっては購入を検討する。
510 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 11:52:13 ] 前を使ってないからクイックウォッチってのがわからないけど、 文面からイミディエイトウインドウのような気がする。 ?を最初につけてメソッドとか記述すれば結果がみれるし、フィールドに代入も出来る 初期状態では確かメニューにないから、ユーザー設定から追加。
511 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 11:56:44 ] 式を評価するだけならウォッチ式でできるよ 2008では演算子の上にマウスカーソルを置くと評価した結果が表示されるようになってる
512 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 12:27:59 ] >>510 なるほど、イミディエイトウインドウで自作式を評価できるのか。 今まであんまり使ったこと無かったもんで知らなかった。 それならクイックウォッチいらないかもね。 >>511 それはソースに記述してある式の評価でしょ? それは当然できる。 俺が言ってたのは、ソースに記述してない評価式のこと。
513 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 12:46:42 ] >>512 ウォッチウインドウにある空の行をダブルクリックして式を入力するだけ
514 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 13:14:35 ] .netだから出来るんだろうけど、 最初にイミディエイトウインドウを知ったときには感動した ドキュメント見て、実際の動作確認をしたくなったら 参照さえしてあれば、そのままF10(ステップオーバー)だけ押せば ソースコードに全くないクラスでもそのまま試せるし、IntelliSense効くし ちょっとしたことなら確認用のプログラム書かなくてもいいんだよな テストしたいクラスがあったときもイミディエイトウインドウから実行できるし ブレイクポイント設定しておけばちゃんと止まるし
515 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 15:36:46 ] >>502 DirectoryInfoとFileInfoにして色々試してみました 大きなディレクトリを移動させる際の重さがなくなったのですが、移動スピード(?)というか処理にかかる時間が延びてしまったようです まだ色々試している段階なのですが、これは良くも悪くも安定したということか・・ 何はともあれ新しい可能性です、もう少し試行錯誤していこうと思います ありがとうございました
516 名前:デフォルトの名無しさん [2008/01/25(金) 16:32:16 ] DataGridView 内のセルにて 長い文字列を入力した時に折り返すようにしたいのですが どのように設定すれば良いのでしょうか? WrapMode を True に設定したら全角文字は上手く折り返されるんですが スペースを含まない半角文字はセルから溢れてしまい、困ってます。
517 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 23:56:07 ] 今データベースを使用するアプリケーションを書いているのですが、 SQL文が非常に長くて可読性が悪いので文を分割しようと考えてます。 この場合、 string query = "select hoge, fuga, hage from test" + " where hage = 1 ・・・"; 見たいな書き方しますか?それともStringBuilderを使ってApendしていきますか? どう書くのが一般的なんでしょうか?
518 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 00:28:05 ] 多いのは単に+で連結じゃないかね? 俺は@でヒアドキュメントもどきが好きだが。
519 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 00:29:32 ] ループ等の中にないならstringで連結してもいいんじゃね それか余所においとくかリソースにつっこむか
520 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 00:36:50 ] リテラルの+はコンパイル時に解決されるからStringBuilderなんて使うと余計に遅くなるよ。
521 名前:デフォルトの名無しさん [2008/01/26(土) 00:44:27 ] C#のtry-catchの質問です シリアル通信を用いたセンサのグラフを表示するプログラムを作っています。 UIのデザインForm1.csとセンサを扱うクラスSensorClass1.csにわけています。 で、シリアル通信の関連のエラー処理をしたいのですが、かきのどちらに try-catchを施せばよいでしょうか。 Form1.cs private void buttonWaaSens_Click(object sender, EventArgs e) { this.sensorClass.sens(); } SensorClass1.cs public void sens() { this.serialPort.DiscardInBuffer(); this.serialPort.WriteLine("sens +000001000 20 5 0"); System.Diagnostics.Debug.WriteLine("取得開始"); }
522 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 00:51:25 ] >>521 いや、日本語書けよw 君はエスパーかもしれんが、ここ読んでるキミ以外の人間はエスパーじゃないんだけど。
523 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 00:57:03 ] ぼくはエスパーです どちらでも好きなほうにどうぞ
524 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 01:08:10 ] >>521 ベストアンサー すべて
525 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 02:33:53 ] PropertyGridのような折り畳み・展開可能なGrid(複数カラム保持)を作成したいのですが、 参考になるURL・方法を知っている方教えていただけますか? こんな感じを想定しています。 ColA |ColB |ColC -NodeA | | -NodeC| | +NodeB | |
526 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 02:42:09 ] >>525 ttp://www.codeproject.com/KB/grid/OutlookGrid.aspx
527 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 03:05:21 ] >>526 ありがとうございます。 コード参考にして作ります。
528 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 05:13:40 ] if(dir.Attributes == FileAttributes.ReadOnly) { dir.Attributes = dir.Attributes & ~FileAttributes.ReadOnly; } dirはDirectoryInfoです これで読み取り属性なら読み取り属性を解除するということになっているでしょうか?
529 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 06:39:01 ] if ((dir.Attributes & FileAttributes.ReadOnly) != 0) とでもしておかないと、読み取り専用以外の属性を併せ持つディレクトリを漏らす。
530 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 06:45:14 ] ディレクトリには必ずディレクトリ属性がついているから、>>528 のやり方では絶対に条件が成り立たないな。
531 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 07:22:43 ] >>529 ありがとうございます 流石に単純すぎて自分のものはいぶかしんでいたんですが 読み取り専用なだけ、という場合しか考慮されていなかったんですね、助かりました >>530 DirectoryAttributes的なものでもあるんでしょうか? 一応こちらの環境では(読み取り専用にチェック入れただけのディレクトリに対しては)できましたが
532 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 07:25:26 ] あれ>>529 がいけそうになさそうな・・
533 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 07:35:47 ] 状況によって消えたり消えなかったり、読み取り属性だけころっとかわったりorz もうちょっと試行錯誤してきます、すみません
534 名前:508 mailto:sage [2008/01/26(土) 07:50:21 ] >>508 やっぱりどちらも無理なんでしょうか?
535 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 07:57:37 ] >>534 どっちも必要ないから無理じゃない?
536 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 09:32:29 ] >>534 メソッドの戻り値はreturnの部分にブレークポイント仕掛ければ分かるよ
537 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 11:43:12 ] >>518 ,519,520 さんありがとうございました。 >>518 @使ったヒアドキュメントもどき私も使っています。 >>520 コンパイル時に解決してくれんですね。安心して+で連結できます。
538 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 13:22:07 ] form1、form2、form3があり、 form1からボタンのイベントでダイアログ形式でform2を開き、そこに値(TextBox)を入力します そのあと、okでform1に戻り、今度は別のボタンのイベントでform3を開き、そこでSaveFileDialogを開きます このときSaveFileDialogのFileName先ほどのTextBoxの値を入れたいのですがどうしたらよいでしょう?
539 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 13:28:42 ] form2にそのテキストボックスの値を取得するプロパティを定義する form2を表示して,okで戻った後にform1のコードからそのプロパティを通して値を取得して form1のフィールドに入れとく form3を開く前にプロパティとかコンストラクタとかでその値をform3に渡す
540 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 13:29:50 ] SaveFileDialogのヘルプ見れば一発でわかりそうなもんだが 一体なにがわからんの? もしかしてform1からform3にファイル名を渡す方法? そんなもん、form3を開く時にファイル名を渡すなりなんなり、自分で考えろ。
541 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 13:32:21 ] >>539 すみません 実際のコードで簡単に書いていただけないでしょうか?
542 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 13:40:58 ] >>540 お前初心者スレからでてったほうがいいと思うぞ
543 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 13:41:36 ] >>541 基礎からやり直せ そのレスで確信したが全くわかってないだろ
544 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 13:43:43 ] >>540 具体的に言えばそうです ただそのform3のsavefiledialogのFileNameプロパティに名前を設定するとき、 sfd.Filename = の後にどうやったらform2のテキストボックスの値を参照できるのかがしりたいです
545 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 13:44:07 ] class Form2 { public string テキストボックスの値 { get { return this.textBox1.Text; } } } class Form3 { private string fileName; public string ファイル名 { get { return fileName; } set { this.fileName = value; } } void SaveFileDialogを開くイベント() { //(略) saveFileDialog.FileName = fileName; } } class Form1 { private string fileName; void Form2を開くイベント() { using (Form2 form2 = new Form2()) { if (form2.ShowDialog() == DialogResult.OK) this.fileName = form2.テキストボックスの値; } } void Form3を開くイベント(){ Form3 form3 = new Form3(); form3.ファイル名 = this.fileName; //form3を表示 }