1 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/26(木) 21:32:32.95 ID:RzRn9VkL0] ふらっとVisual C#,C♯,C#(初心者用) このスレッドは 「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。 ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問、 ググろうにもキーワードが分からない場合など、勇気をもって書き込んでください。 内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。 なお、テンプレ2行目が読めない回答者は邪魔なので後述のC#相談室に移動して下さい。 >>980 を踏んだ人は新スレを建てて下さい。 >>980 が無理な場合、話し合って新スレを建てる人を決めて下さい。 関連スレ ふらっとC#,C♯,C#(初心者用) Part91 toro.2ch.net/test/read.cgi/tech/1335089085/ C#, C♯, C#相談室 Part71 toro.2ch.net/test/read.cgi/tech/1332575004/ こんな感じでソフトウェア板に立てたらどうかな
237 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/20(日) 18:40:59.47 ID:DcSMnQWK0] ああ普通に出来たわ EncodeLocalNameでいいのか
238 名前:名無しさん@お腹いっぱい。 [2012/05/20(日) 19:07:20.83 ID:vz/Du8h20] >>237 MSDNのその辺のドキュメントは、読んでて混乱するからな・・・ おつかれ。
239 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/20(日) 21:09:09.28 ID:CjyZExuu0] >>235 レスありがとうございます 結局TableLayoutPanelで対応しました
240 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/22(火) 22:15:56.28 ID:Zemo3eRi0] Windowsフォームのデータバインディングについてだが、 例えば、こんな感じにtargetControlのValueプロパティにViewModelのDataプロパティをバインドさせるとして、 targetControl.DataBindings.Add( "Value" , ViewModel , "Data" ); ViewModel 側でINotifyPropertyChangedを実装して、 OnPropertyChanged("Data");のようにして呼び出したときにUIとスレッドが異なっていると、 例外(InvalidOperationException)が発生する。まあ、これは、当然といえば当然なのだが、 ViewModelでは、UIスレッドを意識しないようにしたいし、コントロールのValueプロパティなんかでも スレッドの違いを意識しないようにしたい。 今のところ思いついた方法が、コントロールが生成された直後にコントロールのSynchronizationContextを 取得してViewModelに関連付けてOnPropertyChangedでSynchronizationContextを通して PropertyChangedイベントを呼び出すという方法だが、どうにも良い方法とは思えない気がする。 これ以外に何か良い解決方法は、ありますか?
241 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/23(水) 02:42:36.72 ID:qa6OyKBe0] NotifyPropertyChangedみたいなのはうまい解決をしようとして 逆に問題を複雑にしてるだけなような気がする
242 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/25(金) 10:35:25.98 ID:aQ/syKw30] オブジェクトを保存するときXElementに変換してXMLで書き出しているのですが、 XElementに変換する一般的な書き方というのはありますか? IXmlSerializableのようなものがあれば知りたいです。よろしくお願いします
243 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/25(金) 10:42:07.95 ID:0UAn5u+k0] >>242 smdn.jp/programming/netfx/serialization/2_xmlserializer/
244 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/25(金) 12:31:54.65 ID:aQ/syKw30] >>243 XmlSerializerは手間の割りに融通が利かないのでちょっと・・・ IXmlSerializable.WriteXml()のように再帰的にXElementを回収してくれるような仕組みがすでにあるかどうか知りたかった感じです
245 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/25(金) 12:53:36.41 ID:Hmr1Uhd40] >>244 IXmlSerializable.WriteXmlを使えばいいのでそんなもん必要ない XmlWriterの途中にXElementの内容書き込んだり普通にできるからな
246 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/25(金) 14:45:18.12 ID:T48ZmvCh0] ContextMenuStrip に縦方向のスクロールバーを付けたいのですが、なんとかならないでしょうか。 アイテムが多くて画面に収まらないときはメニューの上下端に▲、▼が現れてそれを押すと スクロールしますが、それではなくスクロールバーを付けたいのです。 ComboBoxのメニューのようなスクロールバーです。 VisualStudioでコードを入力しているときにメソッドがポッと出てくるメニューのようなスクロールバーです。 public partial class UserControl1 : ContextMenuStrip { public UserControl1() { InitializeComponent(); this.VScroll = true; } } こんなこともやってみましたがダメでした。
247 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/25(金) 17:19:46.33 ID:54oiiha70] なんとかならなくもないだろうけど。 プロパティひとつ設定すればというお手軽な方法はないな ToolStripDropDownから派生して、スクロールバー表示時のアイテムの幅自前計算するとか もしかしたらToolStripから派生して自前でToolStripItemの管理するはめになりそう むしろFormから作ったほうが簡単な予感がする BorderなくしてListBoxでも全体に貼り付けてとか
248 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/26(土) 10:47:45.49 ID:/w9VkIqN0] >>247 やはりお手軽にはできなそうですか。 ListViewを張り付けたFormを試してみようと思います。 フォーカスが外れたら、消える。 ListViewのSelectedIndexChangedで何かがクリックされたとみなして メニューが選択されたときの動作を行う。 こんな感じでしょうか。
249 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/26(土) 16:44:22.18 ID:Oznxncr00] 画像のバイト列をImageに表示したいのですが真っ白なままでどうもうまくいきません。 ローカルファイルをSourceにUriで指定すると表示されるのでXAML側の記述は問題ないと思うのですが・・・ ↓こんなコードですがどこに問題があるのでしょうか? ideone.com/7puAt 何かアドヴァイスいただけると助かります。
250 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/26(土) 21:50:26.72 ID:qEPXpQfe0] 速度に関する質問です 下記の同じ結果を出す、ちょっと複雑な処理があったとします (内容はfor文中にrを元にして、下記の通り、int型変数R、G、Bを作成します r→R、G、B 0→0,0,0 1→1,0,0 2→0,1,0 3→0,0,1 4→1,1,1 5→2,1,1 〜) for (int r = 0; r < 100000; r++) { int R = r / 4; if (r % 4 == 1) R++; int G = r / 4; if (r % 4 == 2) G++; int B = r / 4; if (r % 4 == 3) B++; } for (int r = 0; r < 100000; r++) { int R = r / 4 + (r + 3) % 4 / 3; int G = r / 4 + (r + 2) % 4 / 3; int B = r / 4 + (r + 1) % 4 / 3; } この処理を10回処理させたところ、処理速度は10回とも0.0016代と0.0024代になりました 一例 if文タイプ 00:00:00.0016217 複雑計算タイプ 00:00:00.0024181 if文を挟む方が遅いイメージだったのですが、複雑な計算をさせた方が遅いものなのでしょうか?
251 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/26(土) 22:03:04.02 ID:DTKuZabL0] もっと繰り返し回数多くしたほうがいいんじゃないの 差が微妙すぎてよくわからない あとr+2 r+1 rじゃないの同じ結果にしたいんだったら あと計算結果とっといてどこかで使わないと最適化で捨てられちゃうんじゃない 複雑な計算させたほうが早かったりif文のほうが早かったりいろいろあると思うけどね 最適化の具合とかで
252 名前:249 mailto:sage [2012/05/27(日) 00:38:22.87 ID:fLxELx8b0] 自己解決しました。 ↓のようにしたら表示されました。 ideone.com/7p4hu BeginInitの後に bi.CacheOption = BitmapCacheOption.OnLoad; を入れることで表示されました。
253 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/27(日) 09:54:33.99 ID:HSQgQMmy0] formとメトロってワンクリックで切替できますかね?
254 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/27(日) 10:00:40.57 ID:clOyRCuk0] >>250 その程度の距離のif文ならL1の中にすっぽり納まるからなあ むしろ/や%の方が重いはず
255 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/27(日) 10:03:45.45 ID:clOyRCuk0] >>250 これって速度的にはどうなる? for (int r = 0; r < 100000; r++) { int R = r>>2 ; if ((r & 0x3) == 1) R++; int G = r>>2 ; if ((r & 0x3) == 2) G++; int B = r>>2 ; if ((r & 0x3) == 3) B++; }
256 名前:名無しさん@お腹いっぱい。 [2012/05/27(日) 10:08:42.69 ID:clOyRCuk0] その前に最初の計算式二つは結果が等価じゃねーだろw
257 名前:名無しさん@お腹いっぱい。 [2012/05/27(日) 10:45:25.60 ID:clOyRCuk0] ちょこっとコード書いてて気になったんだが最後のパターンがなんか納得いかない結果になる ideone.com/t4Tro
258 名前:名無しさん@お腹いっぱい。 [2012/05/27(日) 10:48:20.87 ID:clOyRCuk0] あ、すまんこれで納得いく結果になった ideone.com/FW5ED
259 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/27(日) 11:12:54.46 ID:clOyRCuk0] シフト演算使ったほうが早いね ideone.com/o1mSO
260 名前:250 mailto:sage [2012/05/27(日) 14:31:19.39 ID:j8A7jdt/0] みなさんレスありがとうございます ケースバイケースなんですね /や%を2回程度余分に使うより、if&++;の方が早いとのだと思っておきます 盲目的にifはできる限り減らした方がいいと思い込んでました・・・ シフト演算を使うという発想はありませんでした というより、普段使ってないので、コードの意味がわかってないので、コードを参考に勉強してきます
261 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/27(日) 16:43:36.10 ID:GiQAzp3Q0] switch(r % 4) にすると?
262 名前:名無しさん@お腹いっぱい。 [2012/05/29(火) 14:07:21.53 ID:/PVv+z9w0] WPFアプリとKinectアプリ間で文字列の送受信を行いたいのですがどうすればよいのでしょうか? Process.Start("Kinectアプリ名.exe");でKinectアプリをWPFアプリ側から起動した後、文字列の通信を行いたいと思っています。 IPCを用いたプロセス間通信を行えばよいのでしょうか? 知っている方がおられましたらご教授をお願いいたします。
263 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/29(火) 16:37:54.74 ID:2RvCxbWa0] このスレで質問することではないかもしれないのですが どこで聞いていいのかわからないので質問します>< DirectShow.Netでフィルターの設定をしたいのですがどのように して設定してあげればよいのかわかりませんorz 解説サイトも動画・静止画のキャプチャの仕方位までしか掲載 されていません。ざっくり、このメソッドを使えば程度でかまいませんので よろしくお願いします。
264 名前:名無しさん@お腹いっぱい。 [2012/05/30(水) 05:04:06.91 ID:AggJDhf10] >>262 そんなマニアックな状況、やってみなきゃわからんのだから IPCでまずはやってみなよ。
265 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/30(水) 21:18:00.04 ID:M2GA61XI0] c#でトランプの数当てゲームを作りたいのですが、ホームアプリケーションでいいなでしょうか?
266 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/30(水) 21:52:42.67 ID:QkV5fjWR0] いいな いいな にんげんて いいな
267 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/30(水) 21:55:54.36 ID:to+QgKiM0] 初心者ならコンソールアプリケーションでゲームの中身だけ作ってGUI(Form)つけるのおすすめ
268 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/30(水) 22:15:53.58 ID:5ZOuXXtf0] Formでいいんじゃね ゲーム作りたいならUnityとかゲームエンジンとか使った方がいいと思うが、自力で数当てゲームくらい作れた方がいいかもね
269 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/30(水) 22:49:56.75 ID:zW0msQ/R0] >>265 これを見れば作れる www.nicovideo.jp/watch/sm13022762
270 名前:名無しさん@お腹いっぱい。 [2012/05/31(木) 02:21:11.40 ID:rXSZyiw00] >>264 レスどうもありがとうございます、とりあえずもう少し試行錯誤してみますね!
271 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/31(木) 09:25:01.60 ID:WULY2UZX0] てst
272 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/31(木) 15:01:27.70 ID:VYK3XZ290] なんで難しい質問ばっかなのこっちは
273 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/31(木) 15:17:39.08 ID:jGAKMQam0] 本スレだからな
274 名前:名無しさん@お腹いっぱい。 [2012/05/31(木) 15:52:12.18 ID:unpCDp6t0] 難しいというか、シチュエーションが限定的な質問が来るね。 まああっちで聞いても、本筋と関係ないところで喧嘩おっぱじまるからだろう。
275 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/01(金) 00:01:35.63 ID:p1bYUXat0] IDは偉大、変な自演がないだけでも捗るな
276 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/01(金) 18:51:36.27 ID:tSECQl9H0] シチュエーションが限定的なのはしょうがないんじゃないかな 普遍的な問題は大抵ググればなんとかなるだろうし >>216 の質問をしたのは俺だけど ググっても同じ問題にはまっている人が見つからないのは本当に困る・・・
277 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/02(土) 08:13:25.59 ID:8F3osLeN0] てst
278 名前:名無しさん@お腹いっぱい。 [2012/06/03(日) 23:02:26.26 ID:9cE78MGH0] C#でDirectxを使おうとしたら、遅延通知が出たのですがどうすればいいですか?
279 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/04(月) 01:15:23.77 ID:dVdSCbBH0] 遅延通知って何?
280 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/04(月) 06:00:16.63 ID:MKF8PCbd0] この言語のリファレンスマニュアルって糞見づらいMSDNしかないの?
281 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/04(月) 08:46:10.03 ID:SO+LzFoe0] さらに見づらい上に古いPDFであればありますよ あなたがC#のリファレンスと.NETのリファレンスを混同していないことが前提ですが…
282 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/04(月) 11:06:38.28 ID:tdHet/L00] てst
283 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/04(月) 15:07:32.53 ID:eBbL6cVl0] MSDNから必要な情報を見つけ出して、珍妙な自動翻訳に動じず英語版見に行くようになったら一人前。
284 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/04(月) 20:30:54.41 ID:amclDH490] .netの翻訳は人間がやってるらしいぞ
285 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/05(火) 23:42:14.54 ID:0HX/yiCx0] デリゲートがよく分からないのでJavaScriptで例えて説明してください
286 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/06(水) 00:07:44.80 ID:E/iZIMwt0] 関数オブジェクトのようなもの
287 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/06(水) 02:20:14.29 ID:8bMay9C00] >>285 jaba.johnson.co.jp/
288 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/06(水) 02:26:05.25 ID:E/iZIMwt0] >>287 それはJavaだ。 JavaScriptと一緒にすんなw
289 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/06(水) 06:44:05.39 ID:Wke9K+FZ0] >>287 ×Java ○Jaba JavaScriptは使ってるようだが
290 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/06(水) 11:43:22.64 ID:T2vSLGVJ0] てst
291 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/08(金) 00:17:06.02 ID:SjP/JzaM0] てnd
292 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/08(金) 21:26:45.75 ID:H4JMKmsI0] カスタムコントロールの中のComboBox(Bとする)の.Itemsに他のクラスからアクセスしたいと思っています 当該Itemsに別データの配列を突っ込みたいので、カスタムコントロールのプロパティにしようかと思ったら、setの記載で読み取り専用だからできねーよカスと怒られます なにかよい方法はないでしょうか? public ComboBox.ObjectCollection B_.Items { set { B..Items = value; } get { return B..Items; } }
293 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/08(金) 21:33:08.47 ID:KTgDzfcK0] >>292 ComboBox.DataSourceプロパティ
294 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/08(金) 22:43:38.32 ID:H4JMKmsI0] 下記で期待する動きになりました ありがとうございました getもDataSourceにせんでいいのかな?と迷いましたが、デザイナー上の入力を考えるとこっちの方がベターぽいのでこれで行きます public object B_.Items { set { B.DataSource = value; } get { return B.Items; } }
295 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/08(金) 23:36:24.17 ID:1FPwfIgl0] てst
296 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/09(土) 22:24:13.82 ID:/l9t5PUy0] Visual Studio Express 2012 for Windows Desktop blogs.msdn.com/b/visualstudio/archive/2012/06/08/visual-studio-express-2012-for-windows-desktop.aspx
297 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/09(土) 22:39:56.78 ID:km1yHHW40] そりゃまあ、普通に考えたら出ないとおかしいよね
298 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/09(土) 22:41:49.99 ID:/l9t5PUy0] だってVC++あるしなあ
299 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/09(土) 23:50:34.37 ID:8fI3WDv10] Formは入ってるの?
300 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/10(日) 13:44:32.26 ID:JcRdqHi90] C#どころかプログラミング始めたての初心者で申し訳ないのですが質問させてください。 if (A != B) { return; } do(); と if (A == B) { do(); } では同じ処理になると思うのですが、どちらを用いるのが一般的なんでしょうか
301 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/10(日) 13:56:41.08 ID:+ns6eJGu0] 前者はガード句と呼ばれる書き方で、主にifのネストが深くなった時に使う ifが1段しかないのなら後者
302 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/10(日) 13:58:07.44 ID:t7lhSWC+0] しっくり来る方でいいでしょ
303 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/10(日) 14:04:31.24 ID:+ns6eJGu0] しっくりこないんですぅ
304 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/10(日) 14:36:26.02 ID:JcRdqHi90] >>301 >>302 レスありがとうございました。参考にさせてもらいます
305 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/10(日) 14:41:36.15 ID:JcRdqHi90] 重ねて質問すみません txtBox1.Clear(); txtBox2.Clear(); txtBox3.Clear(); これを繰り返し構造でスマートに書きたいのですが、変数等を用いれば可能でしょうか
306 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/10(日) 14:43:50.00 ID:t7lhSWC+0] var array = new[]{ tb1, tb2, tb3 }; foreach(var tb in array){ tb.Clear(); } とかかな
307 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/10(日) 14:45:11.20 ID:+ns6eJGu0] FormコンストラクタのInitializeComponent()の後ろで配列にでも入れておけ foreachで繰り返せる
308 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/10(日) 14:59:08.22 ID:JcRdqHi90] なるほど!同じ型の配列に入れておけば良かったんですね ありがとうございます
309 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/10(日) 21:05:08.87 ID:RMEDkwv20] 製品版のVisualStudioってメンバー変数のプリフィックスに_とかつけられます?
310 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/10(日) 21:45:47.86 ID:+ns6eJGu0] むしろなぜ付けられないと思うの?
311 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/10(日) 22:10:12.18 ID:RMEDkwv20] Expressでできないからですね Formのコントロール変数に自動で_をつけてくれたら便利だと思いまして
312 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/10(日) 22:15:58.50 ID:+ns6eJGu0] 全然意味合いが違うじゃねえか 質問を略すな Pro版でもできません
313 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/10(日) 22:19:28.22 ID:MHePrPj+0] 自動でってところがミソか
314 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/10(日) 23:40:57.57 ID:RMEDkwv20] ありがとうございます。やっぱり無理でしたか・・・
315 名前:名無しさん@お腹いっぱい。 [2012/06/14(木) 07:03:26.20 ID:98NsRCek0] Formを継承したクラスがいくつかIDisposableなオブジェクトを持っていて、それらをDisposeしなければいけない場合 どこに書いたらいいんでしょうか。 Form1.Designer.csの方にFormのオーバーライドされたDisposeメソッドがありますが、 そこに追加しちゃってもいいのでしょうか。(デザイナの方に影響与えたりしません?) それともDisposedイベントでやるべきなんでしょうか。
316 名前:名無しさん@お腹いっぱい。 [2012/06/14(木) 07:36:22.23 ID:A0uxVl2o0] 1. そもそもインスタンススコープで扱うべきか考える 実はメソッド単位で扱えるものなんじゃないの?という回帰。 2. コンポーネント化することもちと考える。 Formと同じ寿命のDisposableなオブジェクトがあるってことは、 Formにロジックを詰め込みすぎてないか? ロジックを然るべきレイヤに分けて、コンポーネント化しちゃえばいんじゃね?という発想。 3. Disposeしたいというのなら .Designer.csのオーバーライドされたDisposeメソッドに書いちゃって大丈夫。
317 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/14(木) 08:37:45.34 ID:SlYrQktU0] 前から思ってたけどcomponentsフィールドっていつ使われるんだろ あれに追加されたらFormが破棄されるとき一緒にDisposeしてくれるよね
318 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/14(木) 09:19:19.33 ID:98NsRCek0] >>316 ども 3でいかさせて頂きます たとえばフォントオブジェクトをフォーム上のボタン等に個別に適用した場合 明示的にDisposeさせるよい方法がないので困っていました フォーム閉じて参照が切れればいつかGCされるさ、とか アプリケーションが終了した時点で解放されるからいいやん、とか それだけでなんともならないシナリオもあるのに、と……
319 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/14(木) 10:01:27.49 ID:oUOmZZHy0] 初心者なのでこちらで質問させてもらいます。 Aというクラスを継承してBというクラスを作成したのですが、Aの中の一部のフィールドやメソッドを継承したくない場合、Bの中でどうのような記述をすれば簡単に実現できるでしょうか? 目的は単にBのインテリセンスにそのメソッドなりを表示させたくないだけなのですが。 よろしくお願いします。
320 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/14(木) 10:07:06.46 ID:SlYrQktU0] >>319 Aの該当メンバーをprivate指定する Bのほうから継承しないという指定はできない C++ならできるけど煩雑すぎてC#には採用されなかった
321 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/14(木) 10:10:46.97 ID:WOJH/6WO0] private new ベースクラスのメソッド名(引数も合わせる ...){} これで一応できるけどキャストしたらベースクラスのは呼び出せるわね
322 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/14(木) 10:48:44.80 ID:SlYrQktU0] newの使い道がよくわからないんだけど、virtual指定されてないメソッドをオーラーライドしたいときでいいの?
323 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/14(木) 11:08:28.11 ID:WOJH/6WO0] オーバーライドするとベースクラスにキャストした時もオーバーライドしたメソッドが呼び出せる つまりベースクラスのメソッドを上書きできる newの場合はベースクラスにキャストするとベースクラスのメソッドが呼び出される 上書きしたわけじゃなくて同じ名前のメソッドが定義されたので 前のが呼びだせなくなったという感じ
324 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/14(木) 12:25:35.45 ID:+pekMVIj0] abstract オーバーライドしろ virtual オーバーライドしてもいいよ 未指定 できなくは無いがnew付けろよ。
325 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/14(木) 13:20:39.57 ID:SlYrQktU0] >>323 ,324 ありがとう。つまりポリモーフィズムとはまったく関係ない機能なのか どんな用途で使うんだろ・・・
326 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/20(水) 23:24:01.56 ID:W/4WFKKT0] >>325 一番は、後から基底クラスに派生クラスのメンバと被るメンバが追加されたときに 意図せずオーバーライドしてしまうのを防ぐため その意味では別にnewは無くてoverrideだけでいいんだが、overrideの付け忘れなのか わざとやってるのか区別するためなんだろう
327 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/21(木) 12:27:26.65 ID:K9S0VvT90] visual c#で、ボタンを押すとテキストボックスに入力した英文(長文)をもう一つのテキストボックスに文を並べ替えた状態で出力するアプリを作ろうとしています。 文を並べかえるというのは、単語の並べ替えではなく、複数の文の1文1文を1つと見て、それらの文を並べ替えるという意味です。 考えているアルゴリズムとしては、入力文を初めから一文字ずつ読み取っていき、ピリオドが出た瞬間に初めからその部分の文字列を 文字列1 に代入。 続いてその次の位置からまた一文字ずつ読み取っていき、ピリオドが出た瞬間に、その部分を 文字列2 に代入・・・と繰り返し、最終的にn個の文字列をランダムに並べ替えたものを出力する、というふうに考えています。 C#で作る場合このような流れで作るのがよろしいでしょうか?その場合どのような文字列操作関数を使用していけばいいのでしょうか。 また、他により効率的な方法があればご教示お願いします。
328 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/21(木) 12:36:01.13 ID:tG9UJEis0] ピリオドでスプリットすれば一発
329 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/21(木) 12:45:20.29 ID:K9S0VvT90] >>328 なるほど、splitメソッドというのを使えばいいのですね。 この場合、Mr.などの単語が1つだけの文が生成されないようにするには 具体的にどう条件を追加すればよろしいでしょうか? (Mr. Tanaka is Japanese. を1つとしたい場合等)
330 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/21(木) 12:50:03.71 ID:tG9UJEis0] Mr.の場合はjoinすればいい
331 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/21(木) 13:30:59.90 ID:XTsjM3La0] var sentences = text.Split("."); var list = new List<StringBuilder>(); list.Add(new StringBuilder()); foreach(var sentence in sentences) { list.Last().Append(sentence + "."); if(IsOneWord(sentence) == false){ list.Add(new StringBuilder()); } } return Sort(list); こんなかんじ?
332 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/21(木) 13:39:41.01 ID:K9S0VvT90] >>330-331 ありがとうございました 参考にして作ってみます!
333 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/21(木) 13:46:05.56 ID:mk4m3Qvr0] WPFでListboxを2つ配置して、ItemsSourceを同一のコレクションに設定した時の挙動についてなんですが コードでこのようにしたとき public partial class MainWindow : Window { ObservableCollection<Object> obj = new ObservableCollection<Object>(); public MainWindow() { InitializeComponent(); for (int i = 0; i < 50; i++) { obj.Add(CreateRectangle()); obj.Add(i.ToString()+"s String"); } listBox1.ItemsSource = obj; listBox2.ItemsSource = obj; } Rectangle CreateRectangle() { Rectangle r = new Rectangle(); r.Width = 20;r.Height = 20;r.Stroke = Brushes.Black; return r; } } 片方のListboxに表示されているRectangleはもう片方のListboxの表示からは取り除かれてしまいます stringについては両方同時に表示されますし、片方のDisplaymenberPathをNameなりHeightなりに設定した場合も同時に表示されます このWPFの図形の表示の仕組みについて解説お願いします
334 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/21(木) 13:53:56.22 ID:/1f0rY470] UIElementがデータソースになった場合、 それは直接ItemsControlの子孫要素になる UIElementは一つの親にしか属せない 普通はRectangleはDataTemplateにして ItemsSourceにバインドするのはその構成要素だけ持つクラスにする
335 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/21(木) 19:56:05.31 ID:C/I3uX5s0] XmlSerializerを使ってデータを一時的に保存したいと思っています. 今作っているクラスはUserとEventListとEventの三つになり,こんな感じに他にデータも含みます. User -string name -EventList --Event ---int x,yなど 保存したいのはUserクラスで,List<Event>を含んでいたので, handcraft.blogsite.org/ComponentGeek/ShowArticle/60.aspx を参考に,IXmlSerializableを実装してリストを保存するだけのクラスEventListを作りました. そしてEventやEventList単体のシリアライズ化には成功しました. ですがUserクラスのシリアライズが上手く行きません… Userクラスはこうなっています public class User { public EventList event_list; public string name; public User() { } }
336 名前:335 mailto:sage [2012/06/21(木) 19:57:19.59 ID:C/I3uX5s0] シリアライズのコードはこうなっています. XmlSerializer serializer = new XmlSerializer(typeof(User)); using (FileStream fs = new FileStream(@"C:\test.xml", FileMode.Create)) { serializer.Serialize(fs, user);} 実行すると $exception {"There was an error reflecting type 'mtest.User'."} System.Exception {System.InvalidOperationException} というエラーがXmlSerializer作成時に出ます. event_listをコメントアウトすると上手く行くのですが,クラスの中に自作クラスを持つ場合は別の処理方法があるのでしょうか? よろしければ解決方法などを教えて頂けると幸いです.
337 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/06/21(木) 22:40:14.42 ID:XTsjM3La0] >>336 別に普通にやればいいだけなはずだけどなあ Listも変なことしなくてもそのままSerialize出来ると思うけど publicなゲッターセッターと引数なしのコンストラクタを持っていること コレクションの場合はAdd(T item)を持っていること といった感じだったと思う