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/ こんな感じでソフトウェア板に立てたらどうかな
152 名前:4/4 mailto:sage [2012/05/05(土) 22:50:31.20 ID:iim98xC70] 上のコードを実行すると、変数 row の値は「1」ですが、 「SELECT * FROM test」すると、何も格納されていません。 しかし、Visual C# 2010 Express を使用して、 直接テーブルにクエリを発行して入力したデータをSELECTすること (ExecuteReader()の返り値を参照)はできます。 どのようにすれば、C#のコードでINSERTやUPDATEができるのでしょうか? (以上です)
153 名前:152 mailto:sage [2012/05/05(土) 22:52:52.88 ID:iim98xC70] >>151 すみません。>>70 の存在に気づかないまま、書き込みしてしまいました。
154 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/05(土) 22:54:23.40 ID:Nyop5iOH0] 怒ってはいないよw テンプレが>>70 っていうのも遅すぎだし ただそういうサイトもあるとは知っておいてね
155 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/05(土) 23:10:18.98 ID:jOpn+oX90] INSERTしたのとSELECTしたのでデータベースファイルが違うんじゃね?
156 名前:152 mailto:sage [2012/05/05(土) 23:27:51.26 ID:s0fFTjR50] 回線が途切れたのでID、変わります。 >>153 お心遣いありがとうございます。次から >>70 を使います。 >>155 レスありがとうございます。 確認しましたが、データベースファイルは同じものでした。 INSERT する時も、SELECT する時も、 同じ SqlCeConnection() のインスタンスの接続を使用しています。
157 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/05(土) 23:32:45.30 ID:jOpn+oX90] ttp://social.msdn.microsoft.com/Forums/ja-JP/vbgeneralja/thread/934bdbe3-2217-4cd7-bfc9-ae2ef5b731ac 具体的にはこれなんだけど
158 名前:152 mailto:sage [2012/05/06(日) 00:04:16.04 ID:M3IW9sbJ0] >>157 重ねてありがとうございます。 プロパティの「出力ディレクトリにコピー」を確認しましたが、 既に「新しい場合はコピーする」になっていました ちなみに「常にコピーする」に変えてもみましたが、変わりませんでした。
159 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/06(日) 00:06:23.44 ID:oKHRofvw0] 書籍も@ITもざっくり説明しているだけだからな コピペはできても応用が効かない感じになる ある程度わかった上で復讐がメモ代わりに見るのはいいけど やっぱりmsdnが出発点には一番いい
160 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/06(日) 00:14:10.21 ID:xh4KhmH40] MSDNは、リファレンスとしては、使うこともあるが、 学習用としては、あまり使わないな。そこらへんは、人それぞれか。 MSDN Blogsの記事(blogs.msdn.com/b/nakama/ )は、読んでおいて損は、無いと思う。
161 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/06(日) 01:30:26.83 ID:oKHRofvw0] >>160 ここいいな、参考になる
162 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/06(日) 12:14:46.69 ID:Dyi3DW+v0] なんか例外出てんじゃないの? catchするの止めてみたら?
163 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/06(日) 14:01:23.28 ID:Q5pbWLBW0] そこは出力すべきだろう
164 名前:152 mailto:sage [2012/05/07(月) 00:25:37.29 ID:m037gZdq0] >>162 これは >>152 へのアドバイスいただいているのだと勝手ながら解釈します。 レスありがとうございます。 例外は出ておらず、catch 句に処理は移っていませんでした。 以来、どうしようもなくなったので、すべてまっさらにして、 Visual C# 2010 Express で新たなソリューションを作り直したところ、 正常に動作するようになりました。 原因は終ぞ分からなかったものの、これで自己解決の気分にしたいと思います。
165 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/07(月) 15:25:42.69 ID:8qFi5QC30] 正規表現についてなんですが、たとえば 001 001 002 002 003 004 004 005 005 とある時、自分の場合00[0-9]でマッチさせるんですが、最初の001にマッチさせたあと次にいきなり002にマッチさせる方法ってないでしょうか? やはりNextMatchを2回呼ぶしかないのでしょうか?なにかいい方法を教えてください
166 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/07(月) 15:34:29.42 ID:UBnHdgfn0] Matchesはだめなん?
167 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/07(月) 17:15:01.04 ID:EsKENrdI0] >>165 for(,,){ regex.matches("?(00"+i.ToString()+")*"); }
168 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/07(月) 17:21:17.61 ID:EsKENrdI0] var eroGazou=Enumerable.Range(1,5).Where(i=>{Regex.IsMatch("?(0\d{1}"+i.ToString()+")*");};
169 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/07(月) 17:23:08.80 ID:UBnHdgfn0] >>168 なるほど 画像の連番かw
170 名前:165 mailto:sage [2012/05/07(月) 18:37:15.95 ID:8qFi5QC30] >>168 LINQ使う手があったんですね。それで試してみます。 >>169 まあそんなところですw あと1つ質問なんですが、 for(int i = 1;i < 999;i++) { Match m = Regex.Match(src, @"00" + i.ToString()); if(m.Success) data[i] = m.Value; } こういうコードを書いてみたんですが、これではだめなのでしょうか?
171 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/07(月) 18:57:17.03 ID:EsKENrdI0] >>170 それだと00998になるんじゃない? 3桁にしたいならこれ (src,"?("+ i.ToString("n3")+")")
172 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/07(月) 22:05:04.46 ID:SmzASuRUi] >>170 あと。変数名は明確にわかりやすくするのが基本だ。 Match 今夜のおかず = Regex.Match(...
173 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/07(月) 22:05:57.36 ID:/M0Q9y5v0] 意味がわかりませんw
174 名前:165 mailto:sage [2012/05/08(火) 00:16:50.44 ID:mTraP+Vz0] この前置きの?ってどういう意味があるんでしょうか? 代替構成体ってやつですか?
175 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/08(火) 01:41:39.89 ID:7KboTL1k0] ちゃんと読んでないけど ?って0-1文字の何か,だよね 区切りのスペースを吸収してんじゃないのかな
176 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/08(火) 02:46:45.94 ID:gH9z368B0] 最初のはてなは何なんだろうな MSDN見ても書いてなかったわ
177 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/08(火) 03:25:06.62 ID:hKk999Ma0] perl5準拠の正規表現なので専門スレで聞け
178 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/08(火) 12:29:27.96 ID:gH9z368B0] いや答えをくれよ
179 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/08(火) 12:31:14.57 ID:X0Onj/iH0] C#で正規表現は使えるけど正規表現の記述ルールは perl5準拠だから分けて考えろよw
180 名前:名無しさん@お腹いっぱい。 [2012/05/08(火) 12:45:19.29 ID:du0kGEvB0] 001 002 とかの文字列作ってから比較するなら、正規表現じゃなくてstringのcontainで充分だよな 具体的に>>170 を書き換えると if(src.Contains(i.ToString("000"))) {
181 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/08(火) 12:56:11.63 ID:gH9z368B0] msdn.microsoft.com/ja-jp/library/az24scfc.aspx だからMSDNの正規表現に書いてないんだから最初に?つけるなんてのはないんだよ 必要なのは専門スレにいくことじゃなくてここで?つけてた奴が誤りを認めることだろ
182 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/08(火) 12:59:42.62 ID:X0Onj/iH0] MSDNに書いてなくてもperl5準拠で動いてるんだから 正規表現のプロに聞けって 正規表現 Part9 toro.2ch.net/test/read.cgi/tech/1323566370/
183 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/08(火) 13:11:39.99 ID:gH9z368B0] 俺はそんな馬鹿みたいな質問をして恥をかくのは嫌だよ 最初に?つけてた奴が出てきてどういう意図で書いたのか言えばいいだけ 間違った解答をしたんだからその責任がある くだらない言い争いでスレを汚すのはやめてくれ
184 名前:名無しさん@お腹いっぱい。 [2012/05/08(火) 13:13:42.55 ID:X0Onj/iH0] 恥ってw 匿名掲示板なんてかき捨てだろうにw 下手なプライドでごちゃごちゃ騒いでるほうがみっともないわ 専門スレで聞けば教えてもらえるのに
185 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/08(火) 13:15:50.91 ID:gH9z368B0] 答えはもうわかってるから
186 名前:名無しさん@お腹いっぱい。 [2012/05/08(火) 13:23:06.64 ID:du0kGEvB0] 170のロジックで、何故正規表現が要るのかさっぱり判らん
187 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/08(火) 13:27:38.59 ID:gx7ZjZDr0] 最初に?をつけるのは最短一致だよ つまり最初にマッチしたものだけが有効 何が不満なんだ?
188 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/08(火) 13:30:41.33 ID:gH9z368B0] var eroGazou=Enumerable.Range(1,5).Where(i=>{Regex.IsMatch("?(0\d{1}"+i.ToString()+")*");}; この正規表現なんかメチャクチャじゃん なにとマッチさせようとしてるわけ? なんでiは1から5で決め打ちなのに2つ目は\dなの? そのあとの+は何?11とか111とかにマッチさせたいの? それに対してなるほどとか言ってるのは何? 自演?
189 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/08(火) 13:32:31.85 ID:gH9z368B0] 最短一致は+とか*の後につけるんだよ わけの分からんことをいわんでくれ
190 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/08(火) 13:33:40.30 ID:gH9z368B0] ああ+は違ったわ
191 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/08(火) 13:36:09.26 ID:GymhAQMh0] なるほどって言ってるのは、エロ画像の部分に対してじゃないの?頭冷やせよ。
192 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/08(火) 13:43:15.63 ID:gH9z368B0] 試したけど最初に?が付いてると正規表現の解析時点で例外が飛ぶ 最後についてる*のおかげで何もない文字列にもマッチする 知ったかぶって初心者に間違った知識をひけらかして開き直ってるんじゃないよ なにが専門スレで聞けだこんな初歩の初歩の内容で
193 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/08(火) 14:02:59.85 ID:5IWNInEq0] その煽って答えを引き出そうってのは プログラム板でやれよキチガイ 正解をいまコピペしようと思ったがやめたわ
194 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/08(火) 14:05:07.75 ID:gH9z368B0] IDかえんな鬱陶しい
195 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/08(火) 15:37:55.87 ID:llgrnxWzi] 結局IDあったって最終的にはモラルの問題よね
196 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/08(火) 18:25:59.23 ID:gx7ZjZDr0] >>188 1から5ってお前が001から005までしか出してないじゃんw
197 名前:名無しさん@お腹いっぱい。 [2012/05/08(火) 19:00:12.49 ID:du0kGEvB0] >>196 その言い訳はあり得ないw
198 名前:165 mailto:sage [2012/05/08(火) 23:08:30.90 ID:mTraP+Vz0] >>175 お礼遅れてすいません。あれから調べてみたんですけどやっぱりよくわかりませんでした >>186 画像URLを判別する正規表現なんですが、実際はもっと長いURLなので正規表現を使いました いろいろ答えてくれた方ありがとうございます。 あと、自分の質問で荒れてしまい、すいませんでした。
199 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/09(水) 00:59:16.34 ID:kxP9CGP20] ×吸いませんでした。 ○素マンコ
200 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/09(水) 04:17:07.53 ID:LNIbcQkU0] こんにちは。 xmlとかの使いかたがわからないので力技でその環境に合わせたexeをビルドする、ってプログラムを組もうとしています。 で、最後の最後で引っかかってしまいました。 csc.exeを叩いてビルドさせようと思ったもののcsc.exeだけでは動作しません。(当たり前なのはわかっています) .netのフォルダごとまとめて配布しちゃうとかすればビルドの面では問題ない(ファイルサイズとか他にもいろいろマズそう)ですが、それは避けたいところです。 それ以外の方法でC#をビルドする、ってのはどうすればいいんでしょうか。
201 名前:名無しさん@お腹いっぱい。 [2012/05/09(水) 04:28:12.63 ID:ykLw+OKj0] XmlReaderとかXmlWriterとか・・・
202 名前:名無しさん@お腹いっぱい。 [2012/05/09(水) 04:28:52.13 ID:KxtYeqV+0] ・素直にXMLを使う ・プログラムからビルド (www.atmarkit.co.jp/fdotnet/dotnettips/101compileinvoke/compileinvoke.html )
203 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/09(水) 04:44:56.24 ID:LNIbcQkU0] プログラムからビルド、ってのもできるんですね。個人的にそれはちょっと避けたいのでごめんなさい。 XMLとかは一切勉強してないのでそこからですかね。 build.batとかを作ってuserにcsc.exeのpathをいじらせる、それをプログラムに叩かせる ってのを想定して試しに組んでみたもののいろいろやる必要があるっぽいですね。 batはユーザに叩かせるものにしようと思います。それぐらいやってほしいところですし…。 ありがとうございました。
204 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/09(水) 05:30:58.28 ID:tCunqWXC0] せめてMsbuild
205 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/09(水) 05:33:04.68 ID:LNIbcQkU0] >>204 起きたら調べる とん
206 名前:名無しさん@お腹いっぱい。 [2012/05/09(水) 05:47:55.49 ID:KxtYeqV+0] >>203 なぜ勘弁したいのか分かりかねる。 プログラムからビルドして、ビルドしたアセンブリを.exeなり.dllなりで保存すりゃあいいじゃないか。
207 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/09(水) 07:28:32.03 ID:LNIbcQkU0] >>206 なるほど、みるリンクを間違っていたようだね。 >>202 の最初の方のリンクに頼りつつ別のexeを作ってそっちに投げる形で努力してみる。みんなサンクス
208 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/11(金) 17:58:11.91 ID:KWXw6kgy0] 過疎り果ててるな・・・・
209 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/11(金) 21:29:13.65 ID:f0A2C8JG0] 位置づけ的にこっちは避難所みたいなもんだから別にそれはそれで良いんじゃね この板は確かなかなか落ちなかったはずだし
210 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/12(土) 19:51:10.89 ID:UIeofCgi0] 久しぶりにここに来たのだが 前からIDの表示ってあったっけ?
211 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/12(土) 20:09:30.99 ID:6NFukbEw0] よく板の名前を見てみろw
212 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/12(土) 20:21:56.03 ID:Ouq+wRbz0] 息をするように自演してるからこっちでやらかしそうで怖い
213 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/12(土) 20:22:28.28 ID:EnOaymSY0] 死ねよ
214 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/13(日) 17:40:40.30 ID:/aU9UOq3i] まかせとけ
215 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/13(日) 17:45:37.48 ID:hQ2ica5m0] いや俺が
216 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/13(日) 21:25:25.49 ID:xD8ADFqi0] public Form1() { InitializeComponent(); var MonthCtrl = new MonthCalendar(); MonthCtrl.ContextMenuStrip = this.contextMenuStrip1; var CtrlHost = new ToolStripControlHost(MonthCtrl); this.testAToolStripMenuItem.DropDownItems.Add(CtrlHost); } www1.axfc.net/uploader/Img/so/142186.jpg メニューを開いたまま右クリックでコンテキストメニューを開くにはどのようにすればいいでしょうか
217 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/13(日) 21:32:34.94 ID:Axjqo1yk0] ToolStripDropDownMenuを継承して OnClosingをオーバーライドしてコンテキストメニュー表示時はe.Cancel = trueにする その後閉じる処理をどこかでしないと表示しっぱなしになるからそこんとこうまく処理する
218 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/13(日) 22:45:07.31 ID:xD8ADFqi0] >>217 ToolStripDropDownMenuの使い方に少し悩みましたが何とか目的を達成できました。 本当にありがとうございます
219 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/17(木) 20:47:43.98 ID:/wFJphTP0] Form1.csに色々と機能を詰め込んでツールを作っています ツールの機能が増えてきたので、classを分けようと考えているのですが、どのように分けるか迷っています ・メインのテキストボックス(仮にtextbox1とする)があり、各機能からtextbox1のプロパティにアクセスする ・機能ごとに使用するボタンやコンボボックスが複数ある 思いつく方法としては 1.textbox1のプロパティをgetsetでForm1.csのプロパティとした上で、機能ごとにカスタムコントロール化する →各ボタンのclickedが各カスタムコントロールのソースで書ける点がメリットだが、カスタムコントロール内のプロパティをForm1.csのデザイナーでいじることが面倒になる 2.各ボタンはForm1.cs上で設置したままで、各機能ごとにclassを作成し、Form1.cs上のソースでclickedが呼ばれたら各機能のclass内のメソッドを呼ぶようにする →各ボタンのプロパティをForm1.csのデザイナーで設定できる点がメリットだが、Form1.cs上にclickedが残ることで綺麗に整理できた気がしない 今のところ1でやろうかと思っているのですが、アドバイスやこうするといいぜって方法があれば教えて下さい
220 名前:名無しさん@お腹いっぱい。 [2012/05/17(木) 20:56:58.37 ID:BRanfvHF0] 抽象的なアドバイスで申し訳ないけれど、 コントロールを起点に思考するのではなく、データを起点に思考すると良いかと思う。 A, B, Cというコントロールをこういう風に操作するから・・・ではなく、 α, β, γというデータをこういう風に編集するから・・・で考える。 コントロールは、それぞれの編集において ・編集処理の起点(ボタン操作などのイベント) ・編集結果の表示 である、と捉えておいた方が、良いと思う。
221 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/17(木) 20:58:44.82 ID:UP2D4Go60] MVCでぐぐれ
222 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/17(木) 21:13:50.69 ID:aER5I2nt0] たぶんMVCだがMVVMについては、考え方がいろいろあるので間違ってるかもしれないが… UIであるフォームやコントロールは、ユーザーとの対話であることが前提だと思う。 具体的な処理とは、データベースに接続したり、データを取得するとか、ネットワークに接続する等。 この具体的な処理をモデル。 Form1.csなりUIを取り扱うコードで必要なのは、ユーザーからの要求・結果の表示に留めておく。 それらのUIに関する処理をビュー。 それらの間に位置するのがビューモデル。 ビューモデルの役割は、モデルのデータを取ってきてビューに表示できる結果を作ったりする。 ListBoxコントロールとかDataGridViewコントロールのDataSourceに関連付ける為のリストなどをビューモデルに持たせておく。 ビューであるフォームやコントロールは、ビューモデルが公開するイベントなどを使って 結果の表示やビューが公開するメソッドを呼んで何かしら操作の要求を行うようにする。 つまり、機能そのものとユーザーとの対話部分は、きっちりと分けて作っておいて UIが無くても機能自体は、使えるようにする感じに。 ※そこまでやるなら、WPF使えよ…という突っ込みは、受け付けていません。
223 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/17(木) 21:37:52.78 ID:t3KcC4L10] >>219 Form1.csとかにロジックを書くのは常に悪手だよ class Kinou { public Kinou(CustomControl cc) { cc.Event += (sender, e) => EventAction(); ... } void EventAction(){ ... } } 機能ごとに自作クラスに必要なコントロールを入れて何をするか一個一個書くべき Formとかはレイアウトの都合でデザイナで自動生成されるだけだから 機能ごとにクラス分けしたりするには不向き Formのメンバなんか多すぎてインテリセンスが使い物にならなくなるしね だから2を一歩先に進めて全部自作クラスでやればいい
224 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/17(木) 21:40:42.89 ID:/wFJphTP0] >>220-222 レスありがとうございます MVCについて調べてきました 「コントロール→モデルのアクセスはあるが、モデル→コントロールやモデル→ヴューのアクセスはない」という考え方は意識していませんでした すると、機能ごとにカスタムコントロール化するというよりも、各機能のメソッドをモデルとして抜き出して、 textbox1のプロパティは引数として与えて、モデル処理後に返させる or 別にデータを用意してモデルに管理させて結果として返させる という形にした方が良いのかと思いました モデル→コントロールというアクセスがない方向でクラス分けを考えてみます
225 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/17(木) 21:46:23.75 ID:t3KcC4L10] モデルからコントロールはもちろんいじっちゃだめだよね でもモデルで処理するだけなら通常のプログラミングの範囲で GUIの困難はそこを分離しただけじゃ解決しないからね
226 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/17(木) 21:49:27.21 ID:aER5I2nt0] モデル:元請け業者 ビューモデル:仲介業者 ビュー:下請け業者 下請け業者から元請け業者に直接要求することは、できないし、 元請けも下請けに直接、何かすることは、できない。必ず仲介業者を通さないといけない。
227 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/17(木) 21:51:15.23 ID:/wFJphTP0] >>223 レスありがとうございます 全部自作クラスでやれたらいいというのは分かるのですが、 教えていただいた方法は 自作クラス内で各ボタンの処理をカスタムコントロールとして受け取って処理する方法ということでいいでしょうか 自分で書いた>>219 の1との違いがよくわかっていないので、よければもう少し教えて下さい
228 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/17(木) 22:08:47.35 ID:t3KcC4L10] >>227 >>219 の1はよくわかんないけど Form1.csのプロパティにしたりするような、Form1.csを肥大化させるようなことはやめて 各機能ごとに自作クラスを作る ボタンを押したらテキストを改変してテキストボックスに入れる、って言う処理だったら class Hoge { public Hoge(Button btn, TextBox tb) { btn.Click += (sender,e) => tb.Text = Model.Hoge(tb.Text); } } まあこんな感じで、その機能に必要な物があったらこのクラスにどんどん入れていく 機能ごとに必要なコントロールをまとめたクラスを作ってGUIの複雑さを軽減する ロジックはModelのクラスに分離する
229 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/17(木) 22:21:48.71 ID:/wFJphTP0] なるほど、わかりました 自分が現在記載している処理だとtextbox1のプロパティを直接いじっているので、自作した他クラスからForm1.cs内のtextbox1のプロパティをいじるには、 Form1.csのプロパティにしてしまうのが簡単かなと思ったので、「textbox1のプロパティをgetsetでForm1.csのプロパティとした上で」という書き方になっていました 自作クラスの引数にした方がよいということですね
230 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/17(木) 22:22:25.54 ID:/wFJphTP0] ありがとうございました
231 名前: 忍法帖【Lv=40,xxxPT】 mailto:sage [2012/05/19(土) 18:01:20.21 ID:6aeuHIE80] test
232 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/20(日) 00:02:48.81 ID:do1RvL6p0] FlowLayoutPanelの様にAddで加えたコントロールを自動に並べるコントロールで、 並べるコントロールの位置を次は下、次は右、次は下といったように選べるコントロールはないでしょうか? □ □□□ □□ みたいな感じで並べたいです コントロールのLocationを直接指定していくしかないでしょうか
233 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/20(日) 00:24:59.24 ID:DcSMnQWK0] そのぐらい自分で計算していれりゃええが
234 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/20(日) 00:26:57.61 ID:do1RvL6p0] 今、調べてるとTableLayoutPanelとかもあったのですが、普通に計算した方がよさそう・・・ 素直に計算して入れます
235 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/20(日) 04:48:51.35 ID:TJmnCt7r0] >>232 FlowLayoutPanel.SetFlowBreakでいいんじゃない? 乗っかってるコントロールから設定するならFlowBreakね。
236 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/20(日) 18:34:02.07 ID:DcSMnQWK0] var url = "www.hoge.com/ "; var elem = new XElement(XmlConvert.EncodeName(url), "a"); これで落ちるんだけどなんでだろう urlを変換してXNameに使うのは無理なんだろうか
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; を入れることで表示されました。