1 名前:デフォルトの名無しさん [2008/04/22(火) 00:31:59 ] (#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。 c++厨の嵐はスルー汁。 前スレ C#, C♯, C#相談室 Part45 pc11.2ch.net/test/read.cgi/tech/1200911737/ その他テンプレ>>2-5 くらい
267 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 21:27:06 ] 普通に考えれば最新の機能には対応してない。それだけだ
268 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 21:32:47 ] C#3.5って出てるの?
269 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 21:39:45 ] >>267 まあ、そうだね。サンクス >>268 ごめん、嘘ついた。NET Framework 3.5でもC#は3.0のままです ちょっと調べてたら原書のProgramming C# 3.0ってのは去年末にでてるんだな 日本語版でないかなー
270 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 23:43:57 ] 始めたばかりの俺はそれを待っている 今は猫と初めてを併用して学習中
271 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 01:02:27 ] 原書買えよ
272 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 02:10:19 ] 質問です。 DataGridViewで自動カラム生成機能ってありますけれど あれのカラムのフィールド名はこちらから指定できないんでしょうか? (特にReflectionを使った手法で) プロパティに属性つけるとかしたら上手くいくんじゃないかと思ってるんですが… ご存知の方いましたらお教えください。
273 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 03:11:04 ] 自動生成したらフィールドも何もないと思うが、 カラムのフィールド名って具体的に何を指してる? デザイナで列を追加したときにフォームに作られる Column*フィールドの名前のことか?
274 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 06:16:50 ] >>273 すいません、あまりにも説明不足でした。 フォームのカラムのヘッダに表示される文字列のことです。 プロパティ名がそのまま文字列変換されて表示されているようなので 多分どこかで設定できるんではと思っているのですが…
275 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 07:41:53 ] Select()でプロパティ名を変えた匿名型にすればいい var e1 = ...; // 元のデータソース: IEnumerable<Hoge> var e2 = e1.Select(x => new { Bar = x.Foo, ... });
276 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 08:36:22 ] 知らない文法だなぁと思ったら2008ですか…。 ちょっと調べてみます。ありがとうございます。
277 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 16:45:58 ] Seleは2005でもあるんじゃ? ラムダはデリゲートになおせばいいよ
278 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 16:47:00 ] Selectな
279 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 16:50:05 ] ごめん嘘だ msdn.microsoft.com/ja-jp/library/bb548891.aspx 3.5からだった
280 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 22:57:12 ] 2005でも似たようなのを作ることは出来るがラムダ式がないと使い物にならない
281 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 06:12:12 ] 2008に慣れてしまって、もうLastOrDefault()相当のコードを書くことすら面倒くさい。
282 名前:デフォルトの名無しさん [2008/05/19(月) 14:21:56 ] WindowApplicationを作っています。 別スレッド(固定周期)でDBの値を引いてきて、Form(メインスレッド)のラベル.Text属性に値を設定する という処理を行なっていますが、 表示されるのは最初だけで、その後DBの値を変えてもラベルの値が変更されません。 どうしたらいいかご教授ください。
283 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 14:29:09 ] >>282 >>227 と同じかな?
284 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 19:18:45 ] 同一のストリームをBinaryReaderとBinaryWriteに食わせた場合、 Closeを呼び出す順番ってどうすればいいの? ついでに、フィールドで持っているストリームをメソッド内のローカルの BinaryReader/BinaryWriterに食わせた場合、仮にメソッド内でClose呼んだりusingを使ったり することを避けたとしてもBinaryReader/BinaryWriterがGCに回収されるタイミングで ストリームも強制的に閉じられてしまうんだろうか?
285 名前:デフォルトの名無しさん [2008/05/19(月) 20:14:51 ] 今、関数の引数を設定したλ式を作る時、以下のようにしているのですが、 もっと良い方法または、ライブラリにこれと同様なことをするための物はあるのでしょうか? static Func<TResult> SetArg<T1,TResult>(Func<T1,TResult> f,T1 a1) { return () => f(a1); } ... static Func<TResult> SetArg<T1,T2,T3,T4,TResult>(Func<T1,T2,T3,T4,TResult> f,T1 a1,T2 a2,T3 a3,T4 a4) { return () => f(a1,a2,a3,a4) ; }
286 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 20:50:34 ] >>285 >static Func<TResult> SetArg<T1,TResult>(Func<T1,TResult> f,T1 a1) >{ > return () => f(a1); >} ライブラリに同等のものはないしもっと良い方法もない。 でもここにあげられたSetArgメソッドを使うぐらいなら a1 => f(a1) と毎回インラインで書けば十分だと思うよ。
287 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 20:57:42 ] >>285 今までC++使っていた人? C++がstd::bind1stやstd::bind2ndをありがたがって使っているのは 今までC++に簡潔なラムダ式が存在しなかったという特殊事情もあるので C# 3.0で無理してまねる必要は無いと思うよ。 C#だとSetArgみたいなのを作ってもインライン展開されないしね。
288 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 20:59:06 ] なんかすごいレベルの高い話してる・・・
289 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 21:00:24 ] 慣れてないだけだよ 解ればそんなに難しくない
290 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 21:10:48 ] >>284 Disposeは複数回呼び出されても大丈夫だから,続けて呼びさえしていれば問題ないんじゃね BinaryReaderやBinaryWriterはファイナライザを実装してないから それらがGCされるときにストリームが勝手に閉じられることはないよ ストリームへの参照がどこかで繋がってる限りは大丈夫
291 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 21:44:31 ] >>290 ありがと。
292 名前:デフォルトの名無しさん [2008/05/19(月) 21:55:05 ] >>286 実はそれがちょっとまずかったので、関数化したという事情があるんです、たとえば。 List<Func<int>> list ; for(int i=0;i<100;i++) { Func<int> tmp = () => i + 5 ; list.Add(tmp) ; } とすると、プログラムする側の気持ちとしては i には 1 , 2 , 3 , 4 , 5 となって欲しいのですが 計算が遅延しますので、i = 100 , 100 , 100 ... となってしまいます。
293 名前:デフォルトの名無しさん [2008/05/19(月) 22:29:40 ] いやそれは遅延のせいではないんじゃ…
294 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 22:31:29 ] C#のデリゲートはクロージャでない
295 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 22:34:25 ] 遅延させたいんでしょう、つかその必要がなければ、Lambdaなど使わずにその場で計算すれば済むわけだし。
296 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 22:39:05 ] Cocoaバインディング便利そうなんだけど、C#でUI作るとき同じようなもの作ったりしてる人おる?
297 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 22:40:44 ] >>292 List<Func<int>> list ; for(int i=0;i<100;i++) { var j=i; Func<int> tmp = () => j + 5 ; list.Add(tmp) ; } こうすればお望みの動作にならんかったっけ?見検証ヾ(゚д゚;) スッ、スマソ。
298 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 22:44:05 ] ListView.ItemSelectionChangedイベントで選択Itemが変化したのを検出し、 別の詳細表示フォームの表示を更新する、といったことをしています。 何も選択していないときは、詳細表示では何も表示したくないので全て消去しているのですが、 ItemSelectionChangedイベントは、選択が切り替わるときに「選択解除」と「選択」の2つのイベントを発生させます。 そのため「表示の解除⇒再表示」となってしまい、妙なチラツキが発生してしまっています。 1回目の解除用のItemSelectionChangedイベントでは、次に選択が入るかどうかが分からないので、 どうやってチラツキを抑えようか困っています。 この問題を改善する方法はないでしょうか?
299 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 01:04:48 ] >>292 こういうので良いんじゃない? var list = Enumerable.Range(0, 100).Select(i => (Func<int>)(() => i + 5)).ToList();
300 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 01:25:06 ] >>298 SelectedIndexChanged使えば?
301 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 02:04:34 ] >>297 やり方はそれでOK そのコード自体はNullReferenceExceptionになるけどなw てか、C#でラムダ式に(パラメータ以外の)変数を入れる場合は、 基本的にスコープを最小限して、参照型ならコピーを使うというのは for文の条件に不動小数点数を使わないのと同じくらい常識だと思う あと、ラムダ式をごちゃごちゃ弄る場合は式木使った方がいいと思う MSDNのどこかに載ってるExpressionVisitor使えばいろいろ出来る
302 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 02:15:36 ] intはいつから参照型になったんだ
303 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 03:25:22 ] >>300 それも試してはいるのですが結果は一緒でした。 マニュアルには複数選択のListViewの場合は削除と追加の時に呼ばれるとありますが、 これはMultiSelect=falseの設定でも同じ仕様で動いていました。 何か設定が足りないのでしょうか? (アイテム選択状態) ⇒別のアイテムを選択する ⇒ListView.SelectedIndexChangedが呼ばれる(選択要素数を確認すると要素数0) ⇒ListView.SelectedIndexChangedが呼ばれる(選択要素数を確認すると要素数1) SelectedItemsだけでなく、SelectedIndicesの内容も同様です。
304 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 03:43:33 ] 選択解除するタイミングはもっと限定できるんじゃないの そのタイミングでだけ消せば
305 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 08:46:40 ] >>303 何も選択してないときの処理を別コントロールにフォーカスが移ったらって条件にすれば?
306 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 09:09:56 ] PictureBoxかPanelのようなコントロールをウィンドウ上に貼り付ける場合、 一画面でどれくらいの個数までが実用的な範囲なのでしょうか? イベントをとりたいのでマーカーとして貼り付けたいのですが、 個数が多いとパフォーマンスが落ちそうで…
307 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 09:51:26 ] >>306 で、君の環境で試したらいくつでパフォーマンスが落ちたんだい?
308 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 11:06:46 ] Windowsアプリケーションから 非同期で、サービスプログラムの状態を知りたいんだけど、 1.別スレッドで周期的にサービスプログラムの状態を監視し、表示する。 以外に何かよい方法ありませんか?
309 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 11:23:04 ] そのサービスは既存のもの?
310 名前:308 mailto:sage [2008/05/20(火) 11:54:44 ] >>309 新しく作成したサービスプログラムなんですが、中身の仕様は変更できません。
311 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 13:51:11 ] Panelの上にいくつかのボタン等をおいて、 そのPanelの上に同じようにPanelを重ねていって場面ごとに最前面にしたいんだけど、 Panelの大きさって全く同じじゃないとだめなのね。 大きさが違うとPanelの中のPanelって事になっちゃうみたい。 それとBringToFrontで最前面にするよりVisibleですかそうですか。
312 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 13:59:09 ] よく分からんが、それはTabControlで済ませることができない操作なのか?
313 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 14:03:50 ] >>310 相手が固定ならそれないりの方法あると思うけど、 それが何かは場合によるから、普通にポーリングでいいんじゃないかな。 サービスへの通知みたいに取れることを期待している?
314 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 14:28:44 ] >>311 試してないけど、ツリーで位置を確認して移動すれば解決する事じゃないの?
315 名前:314 mailto:sage [2008/05/20(火) 14:31:16 ] >>311 いやわかった。 最前面に置いたPanelが小さいと、下のPanelが見えるって事なのかな だから最前面以外のVisibleをfalseにしなきゃいけないんだなっていうことを言いたいのかな だとすればそれは当然。
316 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 13:58:12 ] >>312 そだよ。でもデザイン的にタブが無い操作って事。 >>315 見えるっていうか、大きいPanelに小さなPanelが乗っかっちゃうと、小さなPanelをVisibleをtrueにしても大きなPanelがfalseなので結局表示されないって事なんだ。 たとえばPanel1とPanel2があって、Panel1に重なって小さなPanel2があったとします。 んで別のところにある二つのボタンでPanel1とPanel2を切り替えるために private void button1_Click(object sender, EventArgs e) { panel1.Visible = true; panel2.Visible = false; } private void button2_Click(object sender, EventArgs e) { panel1.Visible = false; panel2.Visible = true; } こんな風に書くじゃないですか。 ところがPanel2はPanel1の中のパネルと判断されて表示されないわけです。 ちなみにPanel2が完全にPanel1に含まれていなくても大きさに関係なくPanel1上のものと判断されてしまうのです。 なので大きさも位置も完全に同じにしないと別々のパネルだと判断されないって事でした。 そして大きさも位置も完全に同じでもPanelをBringToFront()で最前面にしようとしてもダメでした。
317 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 15:58:37 ] >>316 それこそ>>314 で直るはずだろ 今VS起動できないから具体的になんて名前のウインドウだったか忘れたけど ツリー表示でPanel2がPanel1の子になってるはずだからD&Dして兄弟にしてやればいい
318 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 16:45:12 ] >>317 そんなツリーがあるんだ!? 従属関係を指定できれば解決する簡単な問題だったので疑問でした。 探してみます!
319 名前:デフォルトの名無しさん [2008/05/21(水) 16:57:26 ] ドキュメントアウトライン ビューだ!
320 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 17:11:00 ] >>319 今ちょうど検索してて見つからなくて困ってたんだけどありがとう!!! あった!
321 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 17:23:16 ] ただ確認できるだけで従属の変更は出来ないのね。 >>317 のように親子を兄弟にすると位置自体も変わってしまう。 まあでも確認できるだけでもかなり便利になりました。
322 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 18:33:33 ] コントロールの親子あるいは包含関係なら変更できるけど? そもそも、間違ってPanel2をPanel1に入れてる時点で自分に非があるのに あたかも処理系やIDEが悪いかのような論調で書かれも困る 結論としては、デザイン時にコンテナを意識してないお前が悪い てか、コンテナ意識しないとAnchorやDock使えんだろ
323 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 19:15:49 ] ↑なに言ってるの?w
324 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 19:22:47 ] 結論としては(キリッ って事だろ。 何の役にも立たないレス。
325 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 22:12:34 ] >>322 の言っている意味が分からないような馬鹿が偉そうに書き込まないほうがいいぞ。 どう考えても >親子を兄弟にすると位置自体も変わってしまう。 という頭の悪い考えに対する返答だろ。 コントロールの位置座標というのはコンテナに対する相対座標なんだから、 親コンテナが変われば当然Form上における絶対座標は変わるに決まってる。 そんなことも理解できない馬鹿はおとなしくWPFアプリケーションで視覚的に 階層構造を指定できるものを使っておけということ。 フォームデザイナに頼りっぱだからそうなる。 コード上で親コンテナ.Controls.Add()で追加していけば思うような構成にするのは極めて容易い
326 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 00:40:50 ] コントロールの親子あるいは包含関係はどうやって変更するんですか?
327 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 01:03:26 ] Controls.Addすれば子になるんだろ Controls.Removeしてから別のコントロールにAddすればいいんじゃないか
328 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 01:11:25 ] 変更前親コンテナ.Controls.Remove(子); 変更後親コンテナ.Controls.Add(子);
329 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 01:17:28 ] とういうことはPanel1に重ねてPanel2を配置して、 Panel2はFormの子にしたい場合はコードからしか設定できないってことでしょうか??
330 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 01:32:28 ] タブコントロールで、タブ部分だけ消したほうが早そうな
331 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 01:33:19 ] Panel2をFormに追加してから、サイズ変更でPanel1の内側に持ってけ。
332 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 01:35:01 ] >>329 というよりも、最初にPanelを同一の親コンテナの中に重ねて配置したいという時点で、 デザイナで作成するのではなく、最初からコード上でNew Panel()して それをControlsに追加していくようにすべき。 デザイナ上でそれやろうとすると、親切にもDesigner.cs上のコードは 最前面にあるコンテナ内にコントロールを配置しようとしてくれちゃうから希望通りにならない。 ためしにpanel1とpanel2をForm上に重ねるように配置して、 片方のBackColorをBlackにして、Button1のClickイベントで交互にBringToFrontするように してみたが、問題なく入れ替わったぞ。お前のやりたいことはまさしくこれのことだと思うが。
333 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 01:35:39 ] Windowsアプリケーションで、常に一つのフォームしか表示させなくて、色んなフォームにページ展開する時ってどのように実装しますか? シングルトンで実装するのが普通なんでしょうか? それとも1度開いたらHide()で見えなくするだけ? よろしくお願いします。
334 名前:332 mailto:sage [2008/05/22(木) 01:37:13 ] >>331 そりゃ盲点だったわ。 ためしにやってみたらそれでも大丈夫っぽいね
335 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 01:37:38 ] タブコントロールのAppearanceをFlatButtons、ItemSizeを0,1、SizeModeをFixedにすれば、あら不思議
336 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 01:43:58 ] >>330 そんなこと出来るんですかー。 >>331 ドキュメントアウトライン見ながら方向キーで調節したり、 Locateを手打ちしたりして注意しながら配置すれば出来るんですけど、 マウス操作だと親子関係が、ドキュメントアウトラインで親子関係を変えると位置が、それぞれ変わっちゃいますね。 特に後者の挙動は意味不明ですw せっかくのGUIデザイナなのに感覚的に操作出来ないのは面倒ですね。。
337 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 01:50:42 ] >>336 どうしてもデザイナにこだわるならExpressionBlend使ってWPFアプリ作れっての。 あれだとお前のやりたいことが全部感覚的にできるぞ。 あと、 >特に後者の挙動は意味不明ですw >>325 を百回読め。コンテナが変われば位置が変わるってことが理解できない頭なら プログラミングなんて向いてないからやめておけ。
338 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 01:51:51 ] >>332 最前面にあるコンテナの子にしてくれるのは感覚的にも動作的に問題ないけど ドキュメントアウトラインで親子関係解消すると位置が変わっちゃうのは意味不明だけどね。 他の操作でその位置に出来るのになぜ変わるのかと。 >>335 あら不思議! ありがとー。
339 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 01:56:38 ] >>337 親コンテナが変われば相対座標が変わるって言いたいんだろうけど それは問題になってないんですぅ。 GUIで親子関係を解消したら新親の座標に変換してくれたほうが直感的です。 しかもマウス操作したら旧親の子になってしまう座標ならなおさらです。
340 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 12:38:53 ] >>339 何を言ってるんだか意味不明な気がする。
341 名前:337 mailto:sage [2008/05/22(木) 13:59:41 ] >>339 いや、まあもう何も言わんからおとなしくWPFで作ったら? 君の言うGUIデザイナを使って「直感的」に作成できるからさ。 ツールに文句つけるわりには、それを解消したツールがあってもそっちを使おうとしないんだねぇ。 WPFとかXAMLの勉強するのは嫌だけどWPF&XAMLの機能を求めているわけだ。 だだをこねている子供にしか見えん。
342 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 15:05:59 ] よく論点が違うって言われない?
343 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 15:25:58 ] 言われない
344 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 15:27:59 ] 聞く耳持たねえ
345 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 15:28:40 ] WPFが直感的だと!?
346 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 15:33:20 ] うん
347 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 16:05:45 ] WPFはスレ違いだしもう何も言わなくていいですー
348 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 18:38:28 ] 337みたいな質問者の求めてる回答をしない香具師はただの荒しでしかないから^^
349 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 18:41:12 ] 348みたいな質問者の求めてる回答をしない香具師はただの荒しでしかないから^^
350 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 19:41:28 ] どうでもいいけど関係ない話するな
351 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 02:41:06 ] 349みたいな質問者の求めてる回答をしない香具師はただの荒しでしかないから^^
352 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 02:47:33 ] 351みたいな質問者の求めてる回答をしない香具師はただの荒しでしかないから^^
353 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 07:08:57 ] WPFがスレ違いならFormの話もスレ違いだろう
354 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 07:12:31 ] Expression高いしVSのWPFエディタはうんこだし WPFは爆死の臭いしかしない
355 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 08:49:13 ] C#でDataGridViewから派生したクラスを使いたいんですけど Form1.cs[デザイン]を開いて そこにDataGridViewを張り付けて そのあとに Form1.Designer.cs の System.Windows.Forms.DataGridView を MyNameSpace.MyDataGridView に書き換えるとかそういうことをするんですか? そんなはず無いと思うので正しいやりかたを教えてください。
356 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 08:52:30 ] 派生させたクラスがツールボックスに出てるだろう。
357 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 09:01:20 ] >>356 出てますね... ありがとうございます。
358 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 13:55:25 ] すみません、初心者的で申し訳ないのですが、質問させてください。 以下のコードを実行すると、クラスAのセッターを使ってAのプライベート変数に2を代入したいにも関わらず 既定値の0が用いられてしまいます。 警告内容は以下の通りです。 「フィールド 'NAME1.A.x' は割り当てられません。常に既定値 0 を使用します。」 また、付随する質問ですが、void func_A( temp ) { x... }をvoid func_A( temp ) { X... }とすればきちんと2がセットされます。 クラス内であるにも関わらずセッターXを用いる必要があるのはなぜでしょうか。 なお、コンパイル環境はVisual C# Express Editon 2008です。
359 名前:KKK [2008/05/23(金) 13:56:15 ] こんにちは。 はじめましてRayです。 私は大学4年生ですが、最近は大学は週に一回くらいしか行かないのですが、 就活の準備など、家にいることが多くなりました。 しかし、斜め向かいに住んでいる茨城という若い夫婦が嫌がらせをしてきます。 @近所をうろAしたり、家の窓から私の部屋を覗いてきて、部屋に「○○の本がある」などと近所のほかのオバサンに報告したり、 A布団たたきでものすごい音で布団をいつまでもたたきます。 (体格がいいオバサンなので、すごい音がします;;) B私が家にいるのを知っていて近所のオバサンと大きな声で悪口を言ってきます (「Rayが就職なんかできるわけないじゃない!」など・・) C茨城(夫)は部屋を覗くだけでなく、夜になると咳払いなどをしていつまでも近所をうろついています。 気持ち悪いので、弁護士や市の職員に相談しましたが、なかA証拠が取れなく、裁判まで持ち込めない状況です。 D車のエンジンをいつまでもかけ、うるさくする。 とにかく精神的にも滅入っていて、解決したいのですが、できない状況です。 ほかの近所のオバサンも私が困っているのを見て喜んでいるみたいです。 なんとかしたいので、誰か相談にのってくださぃ。 アドバイス待ってます。
360 名前:358のつづき mailto:sage [2008/05/23(金) 13:56:37 ] amespace NAME1 { class A { // メンバ private x; ← ここで警告が出る // メソッド public void func_A( temp ) { x... }; ← ここでx=0として計算してしまう // アクセッサ public X { get; set; } }}
361 名前:358のつづき mailto:sage [2008/05/23(金) 13:57:37 ] using System; using System.Collections.Generic; ・ ・ ・ using NAME1 namespace ConsoleApp { class Main { static void Main(string[] args) { // クラスAを配列としてインスタンス化、xに2をセット n ; A[] arrayA_ = new A[ n ]; for ( int i = 0; i < n; i++ ) { arrayA_[ i ] = new A(); arrayA_[ i ].X = 2; } // メソッドの呼び出し temp; for ( int i = 0; i < n; i++ ) { arrayA_[ i ].func_A( temp ); } }}}
362 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 13:58:59 ] >>360 xの型もXの型もgetアクセサの中身もsetアクセサの中身も書け
363 名前:358 mailto:sage [2008/05/23(金) 14:16:40 ] private double x; public double X { get; set; } です。アクセッサの表記は、.NETのver2かver3でこのように書けるので、それを利用してます。
364 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 14:27:19 ] ヘルプなりで「自動実装するプロパティ」調べれ どうして X が x を知ってる?
365 名前:358 mailto:sage [2008/05/23(金) 14:49:06 ] ヘルプを読んだ結果、 >自動実装したプロパティでは、属性は使用できません。 >プロパティのバッキング フィールドで属性を使用する必要がある場合は、通常のプロパティを作成します に関連がありそうだとは思うのですが、意味がよくわかりません・・・。
366 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 14:56:54 ] X プロパティは x に対応しないよ。
367 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 14:58:31 ] それだと、 private double _X; みたいなのが内部で自動生成されて public double X { get { return _X; } set { _X = value; } }