1 名前:デフォルトの名無しさん mailto:sage [2019/07/16(火) 15:36:23.74 ID:i1fbuZ/pM.net] !extend:checked:vvvvv:1000:512 次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為) 「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。 他のスレッドでは書き込めないような低レベルな質問、 質問者自身なんだか意味がよく分からない質問、 ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。 内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。 なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。 C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください >>980 を踏んだ人は新スレを建てて下さい。 >>980 が無理な場合、話し合って新スレを建てる人を決めて下さい。 ■関連スレ C#, C♯, C#相談室 Part95 https://mevius.5ch.net/test/read.cgi/tech/1508168482/ ■コードを貼る場合は↓を使いましょう。 ideone.com/ https://dotnetfiddle.net/ ■前スレ ふらっと C#,C♯,C#(初心者用) Part143 https://mevius.5ch.net/test/read.cgi/tech/1558002486/ ■情報源 https://docs.microsoft.com/ja-jp
522 名前:デフォルトの名無しさん mailto:sage [2019/08/31(土) 20:59:16.96 ID:DOQSWUJb0.net] start url って叩きゃ標準ブラウザが立ち上がるでしょ 引数ってブラウザのexeパス調べてそこに渡すの? OSが知ってんだからOSにぶん投げればいいだけじゃん
523 名前:デフォルトの名無しさん mailto:sage [2019/08/31(土) 22:02:09.86 ID:3KJgwSNk0.net] >>508 Seleniumだな、それこそ。
524 名前:デフォルトの名無しさん mailto:sage [2019/09/02(月) 13:12:29.24 ID:x5YZ9uix0.net] Span<T>をコレクションに貯める事って出来ないんでしょうか? 受け取ったbyte[]から一部のみを必要としていますが、startIndexとlengthを一々記録するのも面倒であるため、現状は新たにnew byte[length]を作りコピーをして貯めています 別にこれでも全く困っていませんが、あんまりスマートではない気がしているので元のbyte[]を.AsSpan(startIndex, length)したものをコレクションに貯められればスッキリするのですが
525 名前:デフォルトの名無しさん mailto:sage [2019/09/02(月) 13:30:51.46 ID:DTXhuRLF0.net] できないよ array[3..7]とかでSliceするとか元の配列を使うならArraySegment<T>使うとか
526 名前:デフォルトの名無しさん [2019/09/02(月) 14:07:32.18 ID:/BuOMso5a.net] へーSpanってそんな制約があるのか知らんかった https://stackoverflow.com/questions/52484998/the-type-spanchar-may-not-be-used-as-a-type-argument
527 名前:デフォルトの名無しさん mailto:sage [2019/09/02(月) 14:41:25.59 ID:ZSYwkq3t0.net] >>508 例えば、Ruby, Selenium Webdriver なら、 下のファイルを、test.rb とすると、端末で、 ruby test.rb "ここにURL" と入力すると、引数がARGV[0] に入ってくる require "selenium-webdriver" options = Selenium::WebDriver::Chrome::Options.new options.add_argument('--headless') options.add_argument('--disable-gpu') driver = Selenium::WebDriver.for :chrome, options: options driver.navigate.to ARGV[0] # URL
528 名前:デフォルトの名無しさん mailto:sage [2019/09/02(月) 17:47:47.05 ID:btOIY8sya.net] >>515 MemoryExtensions.AsMemory()を経由してSystem.Memory<T>を管理するのはどう?
529 名前:デフォルトの名無しさん mailto:sage [2019/09/02(月) 22:24:59.33 ID:yMcQzedZ0.net] >>518 C#で書かないならスレチ
530 名前:デフォルトの名無しさん mailto:sage [2019/09/03(火) 00:14:45.15 ID:nBDYMOwL0.net] なんで突然ruby?
531 名前:デフォルトの名無しさん mailto:sage [2019/09/03(火) 00:20:55.08 ID:UWVASv0T0.net] >>521 ソイツはいくつかのスレタイにRuby禁止といれることになった元凶だから、考えるだけ無駄よ
532 名前:デフォルトの名無しさん mailto:sage [2019/09/03(火) 04:53:21.49 ID:uBbuO65f0.net] これもう半分まつもとゆきひろだろ
533 名前:デフォルトの名無しさん mailto:sage [2019/09/03(火) 07:44:05.39 ID:ZfMnDhcZ0.net] Matzから分離した闇の半身か何か(ダークファンタジー感)
534 名前:デフォルトの名無しさん [2019/09/03(火) 15:02:01.60 ID:qa0OGce90.net] zipファイルのパスワード総当たりのコードってどこかに落ちてたりしません?
535 名前:デフォルトの名無しさん [2019/09/03(火) 15:23:56.69 ID:gWEsYspAF.net] ム板なんだし自分で書いても大した手間じゃないだろ
536 名前:デフォルトの名無しさん mailto:sage [2019/09/04(水) 23:01:10.22 ID:YAGCYgl00.net] ラプラス使ったほうが早い
537 名前:デフォルトの名無しさん mailto:sage [2019/09/04(水) 23:19:14.03 ID:+3gE1skmF.net] ラプラス変換関係ないだろ
538 名前:デフォルトの名無しさん mailto:sage [2019/09/04(水) 23:23:33.02 ID:YAGCYgl00.net] フリーソフトなんだけど(´・ω・`)
539 名前:デフォルトの名無しさん mailto:sage [2019/09/05(木) 08:24:49.80 ID:cdpeKhxuM.net] ラブプラスに見えたし
540 名前:デフォルトの名無しさん mailto:sage [2019/09/05(木) 12:39:28.85 ID:mWzCSlDu0.net] 頭がc 胴体がDelphi 尻尾がJava これはなんという生き物か?
541 名前:デフォルトの名無しさん mailto:sage [2019/09/05(木) 12:52:58.36 ID:IuZ8kmLDd.net] メインフォームと5つボタンがあるサブフォームあります。 サブフォームで押されたボタンをメインフォームに渡す方法として、下記のようなことが書いてあります。 「サブフォームの呼び出し時にメインフォームのインスタンスをサブフォームの変数に渡すか、もしくは Ownerプロパティを設定し、サブフォームにメインフォームのインスタンスを伝える必要があります。」 これ循環参照にならないのですか? owner プロパティならフレームワークでうまくやってくれそうですが、そうしないなら典型的な循環参照でメモリにいつまでも残るように見えます。
542 名前:デフォルトの名無しさん mailto:sage [2019/09/05(木) 12:57:57.83 ID:IuZ8kmLDd.net] >532のコードで気になった部分 public FormMain() { InitializeComponent(); fs = new FormSub(); fs.formMain = this; } private void button1_Click(object sender, EventArgs e) { fs.Show(); }
543 名前:デフォルトの名無しさん mailto:sage [2019/09/05(木) 13:07:57.99 ID:/TG+lkXnd.net] 昔のVBとかじゃないから 参照カウント方式とかじゃないから 大丈夫だよ
544 名前:デフォルトの名無しさん mailto:sage [2019/09/05(木) 15:05:44.19 ID:olW2Z8c3M.net] >>533 循環になってないやん 相互参照になってるだけ
545 名前:デフォルトの名無しさん mailto:sage [2019/09/05(木) 15:11:39.37 ID:MYIgyYNAM.net] >>535 相互参照⊂循環参照
546 名前:デフォルトの名無しさん mailto:sage [2019/09/06(金) 07:39:44.27 ID:ON7V4Cum0.net] awaitの仕組みって面白いな プログラムは逐次実行と思い込んでいたから最初戸惑ったけど プログラムの可読性を上げつつ非同期が書ける仕組み
547 名前:デフォルトの名無しさん mailto:sage [2019/09/06(金) 12:21:39.70 ID:5uKlWCRxp.net] バカ、逆に非同期の仕組みが分かりにくい事になってて最悪だわ。 若い奴らはある種のおまじないとしか思って無いぞ。 だからサンプル通りに書いたら動いたで思考停止してるわ。
548 名前:デフォルトの名無しさん mailto:sage [2019/09/06(金) 12:23:25.42 ID:5uKlWCRxp.net] だったら最初から完全に隠蔽しちまえばいいのにそれも出来ない半端な言語だよな。
549 名前:デフォルトの名無しさん mailto:sage [2019/09/06(金) 12:27:55.87 ID:RjtqJRZu0.net] >>537 async/awaitはとてもいいよな
550 名前:デフォルトの名無しさん mailto:sage [2019/09/06(金) 12:36:51.77 ID:dfZG2SkRd.net] >>539 へー半端な言語が大増殖してるねよかったね
551 名前:デフォルトの名無しさん mailto:sage [2019/09/06(金) 13:29:27.52 ID:TB1/9ae/0.net] ものすごく細かく気にする価値のないであろう上で質問させてください。 下記のようなコードではColorを予め変数として保持していますが、ColorではなくSolidColorBrushごと変数として持っておいた方が良いと思うのですが違うんでしょうか?(Colorの各変数は下記のConvertメソッドでしか使われていません) private Color redColor = Colors.Red; private Color blueColor = Colors.Blue; public object Convert(object value) { switch ((int)value) { case 0: return new SolidColorBrush(redColor); default: return new SolidColorBrush(blueColor); } }
552 名前:デフォルトの名無しさん mailto:sage [2019/09/06(金) 13:30:16.71 ID:I5nGSvp60.net] Occam 呼んだ〜
553 名前:デフォルトの名無しさん mailto:sage [2019/09/06(金) 13:38:31.81 ID:qBxw88Xh0.net] Convert呼び出した側がOpacityとか勝手に変えたりすることがないことが明らかなら SolidColorBrushで持っててもいいよ
554 名前:デフォルトの名無しさん mailto:sage [2019/09/06(金) 13:43:03.96 ID:TB1/9ae/0.net] >>544 上記のコードは色以外は初期化したいっていう意図だったんですね 理解出来ました、どうもありがとうございます。
555 名前:デフォルトの名無しさん [2019/09/06(金) 20:41:34.27 ID:QErA9RfTd.net] return HttpResponseMessage { StatusCode=HttpStatusCode.InternalServerError } これでクライアントにレスポンス返しても、クライアントで受け取ったレスポンスコードが200になるんだが、どうすりゃ良い?
556 名前:デフォルトの名無しさん mailto:sage [2019/09/06(金) 23:59:27.95 ID:2XeZAy8C0.net] short lo = 500; short hi = -1; int value = hi << 16 & lo; 上記のプログラムでvalueに期待する結果が格納されません。 valueの右辺へおかしいところありますか?
557 名前:デフォルトの名無しさん mailto:sage [2019/09/07(土) 00:04:12.02 ID:1iyY1sdc0.net] まず期待結果を教えろよ 脳内に格納したままで喋るな
558 名前:デフォルトの名無しさん [2019/09/07(土) 00:35:07.80 ID:lng4b11Wa.net] ぶっ飛んでるねw
559 名前:デフォルトの名無しさん mailto:sage [2019/09/07(土) 00:47:49.03 ID:lKqYze8d0.net] >>547 なんとなく&(and)と|(or)を間違えてる気がするけど、期待値書いてくれなきゃ分からんねw
560 名前:デフォルトの名無しさん mailto:sage [2019/09/07(土) 01:10:23.93 ID:ClfuNVBY0.net] >>547 ビット演算?をしてる割には unsignedじゃないのが気になった
561 名前:デフォルトの名無しさん mailto:sage [2019/09/07(土) 01:21:40.06 ID:SOW3zbb30.net] C派生のシフト演算子ってビット演算子よりも優先順位低いんじゃなかったか? C#で入れ替わったのかもしれんが
562 名前:デフォルトの名無しさん [2019/09/07(土) 01:30:36.24 ID:spGdC07na.net] 型変換か?
563 名前:デフォルトの名無しさん mailto:sage [2019/09/07(土) 01:31:47.20 ID:l9Sxm6Vo0.net] >>552 docsに演算子の一覧と優先順位がある https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/operators/
564 名前:デフォルトの名無しさん mailto:sage [2019/09/07(土) 01:52:37.97 ID:lKqYze8d0.net] >>552 逆だぞ Cの時から
565 名前:デフォルトの名無しさん mailto:sage [2019/09/07(土) 01:57:56.73 ID:7Z6eBjmW0.net] ?はもっと上げてほしい
566 名前:デフォルトの名無しさん mailto:sage [2019/09/07(土) 01:58:53.26 ID:7Z6eBjmW0.net] じゃなくて??
567 名前:デフォルトの名無しさん mailto:sage [2019/09/07(土) 11:12:31.90 ID:53qID/ifa.net] async/await、読みやすいし書きやすいけどな。
568 名前:デフォルトの名無しさん [2019/09/07(土) 11:14:11.92 ID:LlCffhcK0.net] https://www.youtube.com/watch?v=O8ucIQA829w Introduction into StockSharp training course どうこれVisual Studioってこんなに速く作れるの? 自分で自動売買ソフト組めるってすごくね?
569 名前:デフォルトの名無しさん mailto:sage [2019/09/09(月) 13:42:14.17 ID:mFi2C/Ml0.net] クラスの継承について分からくなってしまったので教えて下さい。 以下のプログラムを実行すると、コメントの通り、False, True と表示されます。 [STAThread] static void Main(string[] args) { var desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); var folderItems = new Shell32.Shell().NameSpace(desktopPath).Items(); Console.WriteLine(folderItems is Shell32.FolderItems2); // False と表示される Console.WriteLine(folderItems is Shell32.FolderItems3); // True と表示される } Shell32.FolderItems3 は Shell32.FolderItems2 を継承しているので 2つ目が True なら必ず1つ目も True になると思っていたのですが、 これはどのようなことが起こっているのでしょうか。 FolderItems2 object https://docs.microsoft.com/ja-jp/windows/win32/shell/folderitems2-object FolderItems3 object https://docs.microsoft.com/ja-jp/windows/win32/shell/folderitems3-object .Net Framework 4.7.2 でコンパイルし、Windows 10 Pro で実行しました。 よろしくお願いいたします。
570 名前:デフォルトの名無しさん mailto:sage [2019/09/09(月) 13:57:18.69 ID:+ClizqJ4d.net] 下記 は子フォームから親フォームへのデータ引き渡しのサンプルです。 ShowDialog(); の戻り値を使ってないのですが、ここがよくわかりません。 static public List<object> ShowForm2(List<object> argObjs) { using (Form2 subForm = new Form2(argObjs)) { subForm.ShowDialog(); // 戻り値は? return subForm.resultObjs; } } 現在はデータの受け渡しは ShowDialog(); で表示、DialogResult を受け取り、これで処理を分岐。 これだと呼び出し側が少し膨らむと思って探していたサンプルが上のやつです。
571 名前:デフォルトの名無しさん [2019/09/09(月) 14:01:51.48 ID:FLVXg6p/0.net] >>560 type of
572 名前: [] [ここ壊れてます]
573 名前:デフォルトの名無しさん mailto:sage [2019/09/09(月) 14:25:45.50 ID:wj5pBZXU0.net] >>561 それだけじゃ何とも言えないけど ダイアログがキャンセルされたかどうかもresultObjsに含んでる またはキャンセルされたかどうかは重要ではない のどっちかでDialogResultは不要と考えたんじゃね あとはただのチェック忘れか
574 名前:デフォルトの名無しさん mailto:sage [2019/09/09(月) 14:33:19.47 ID:+8Zg4WGY0.net] showdialogはあくまでサブフォーム表示中に 処理を進めないためだけに使っていて 表示したサブフォームがOKもキャンセルもない作りなら 返り値を使う必要がないんだろう 例えばファイルの検索処理とその経過を表示するだけの サブフォームだったりするんじゃないかな
575 名前:デフォルトの名無しさん [2019/09/09(月) 14:44:41.43 ID:y33/yVcMa.net] >>560 FolderItems2とかFolderItems3はあくまでVSによって作られた ラッパークラスなんだと思うけど、たぶんこのラッパークラスには 元のCOMの継承関係は反映されないんだろう。 知らないけど。
576 名前:デフォルトの名無しさん mailto:sage [2019/09/09(月) 14:54:29.42 ID:mFi2C/Ml0.net] >>562 レスどうもありがとうございます。 申し訳ないですが、おっしゃりたいことが理解できませんでした。 >>565 レスどうもありがとうございます。 >>560 で貼り付けた URL は不適切で、 本来は以下の URL を貼り付けるべきでした。 申し訳ないです。 FolderItems2 Interface https://docs.microsoft.com/en-us/dotnet/api/shell32.folderitems2 FolderItems3 Interface https://docs.microsoft.com/en-us/dotnet/api/shell32.folderitems3 この .Net の説明を見てもやはり継承関係はあるようですし、 if (folderItems is Shell32.FolderItems3 folderItems3) { Shell32.FolderItems2 folderItems2 = folderItems3; } のようなコードもコンパイルエラーにならないので、 継承関係があることは間違いないと思います。 また何かお分かりのことがあれば教えていただけると嬉しく思います。 よろしくお願いいたします。
577 名前:デフォルトの名無しさん mailto:sage [2019/09/09(月) 15:06:55.45 ID:wj5pBZXU0.net] COMにおける継承はメンバを引き継ぐという意味であってキャスト可能かどうかは別の話だから .NETのコード上で明示的または暗黙的にCOMオブジェクト(のラッパ)をキャストした場合 QueryInterfaceが呼び出されてそのインターフェイスに変換できるかどうかオブジェクト自身に問い合わせる だから共通型システム的には問題ない暗黙的キャストでもその下のQueryInterfaceで拒否される可能性がある
578 名前:デフォルトの名無しさん mailto:sage [2019/09/09(月) 19:12:21.94 ID:ko6k1+RqM.net] 正規表現を教えてください。 先頭一文字は大文字アルファベット、 次の一文字は大文字アルファベットかスペース、 残り五文字が数字、です。 文字数は多すぎても少なすぎてもダメてす。
579 名前:デフォルトの名無しさん mailto:sage [2019/09/09(月) 19:34:55.30 ID:N7SL81rE0.net] [A-Z][A-Z\s]\d{5}
580 名前:デフォルトの名無しさん mailto:sage [2019/09/09(月) 19:51:19.13 ID:P/8qmdeQ0.net] C#でdxfファイルを読み込んでどんなCADデータかなと表示するにはどんな方法がありますか?
581 名前:デフォルトの名無しさん mailto:sage [2019/09/09(月) 19:51:40.30 ID:+ClizqJ4d.net] >>563 戻り値使わないとエラーでビルドできないと思ったんですが、こんな書き方あるんですね。
582 名前:デフォルトの名無しさん mailto:sage [2019/09/09(月) 19:58:03.26 ID:ko6k1+RqM.net] >>569 ありがとうございます! できました!!
583 名前:デフォルトの名無しさん mailto:sage [2019/09/09(月) 19:58:22.06 ID:8qRxx3SUa.net] >>570 Autodeskのサイトからviewerが落とせたと思うがそれ使うんじゃダメなのか? C#を使って何か独自のことがしたいの?
584 名前:デフォルトの名無しさん mailto:sage [2019/09/09(月) 20:38:09.86 ID:/GXaCKPOd.net] >>570 自力でレンダリングしてるらしきサンプル見つけた https://www.codeproject.com/Articles/156522/DXF-Import-NET-Read-and-View-AutoCAD-Format-Files
585 名前:デフォルトの名無しさん mailto:sage [2019/09/09(月) 21:02:37.25 ID:gB0pdJ5j0.net] >>570 結構大変。DWGならlibreDWGってライブラリーがある
586 名前:デフォルトの名無しさん mailto:sage [2019/09/10(火) 22:30:01.75 ID:/j9k/Fivd.net] >>573 最終型は建築のキープランってものがあって、そこに無数の符号という記号が丸の中に書いてあるんだけどそこを色塗りをしたい。 >>574 ありがとうございます。 難解過ぎてゆっくり休みの日にでも読んでみます。 >>575 やっぱ大変そうですよね。調べてもなかなか... C#スレはあったかいな。ありがとうございます!
587 名前:デフォルトの名無しさん mailto:sage [2019/09/11(水) 00:00:22.11 ID:1SzE9pLa0.net] 一般人「ウィンドウ」 キモオタ「フォームがーーー」
588 名前:デフォルトの名無しさん [2019/09/11(水) 18:58:32.68 ID:YXyi8nZ+0.net] フォームってなに?泡?
589 名前:デフォルトの名無しさん mailto:sage [2019/09/12(木) 08:36:47.62 ID:XbTCqLqm0.net] c#は食わず嫌いだったけど使ってみたら案外良かった 使いやすいように改良してるんだな
590 名前:デフォルトの名無しさん mailto:sage [2019/09/12(木) 11:25:52.65 ID:QIiZhm2T0.net] コントロールのタイマーの質問なんですが private void Timer1_Tick(object sender, EventArgs e) { MyClass myClass = new MyClass(this); myClass.//クラスの処理いろいろ } こう書くと毎回クラスが初期化されてしまいます タイマー内で同じクラスのインスタンスを使い続けたい場合どのように書けばいいのでしょか?
591 名前:デフォルトの名無しさん mailto:sage [2019/09/12(木) 11:31:00.31 ID:AZGZd9Ny0.net] myClassをメンバ変数にする
592 名前:デフォルトの名無しさん mailto:sage [2019/09/12(木) 11:40:42.95 ID:2zGYYD27p.net] myClassなんて再利用性が皆無なネーミングすんなよ。
593 名前:デフォルトの名無しさん mailto:sage [2019/09/12(木) 11:45:28.48 ID:joMf8nOja.net] >>582 説明のための命名だろうよ
594 名前:デフォルトの名無しさん mailto:sage [2019/09/12(木) 12:10:59.94 ID:V+BKjeIEM.net] 発達はコンテキストが想像できないから…
595 名前:デフォルトの名無しさん mailto:sage [2019/09/12(木) 13:44:13.80 ID:j3ZoG8EK0.net] >>582 aho
596 名前:デフォルトの名無しさん [2019/09/12(木) 14:02:29.31 ID:0aQt/zFJa.net] >>580 タイマーのイベントハンドラを消して、適当なタイミング(例えばFormのLoadイベントとか)で private void Form1_Load(object sender, EventArgs e) { var count = 0; timer1.Tick += (snd, ea) => { Console.WriteLine($"count = {count++}"); }; } でもこれだとイベントの購読解除ができないので注意 っていうか、ジョークだから真に受けないでw
597 名前:デフォルトの名無しさん mailto:sage [2019/09/12(木) 20:25:20.03 ID:QIiZhm2T0.net] >>581 レスサンクス、そもそも宣言しないってことですか それもアリかも、今回はインスタンス1個で済みそうだし >>586 レスサンクス、むむむ、どうなるん? >>582 めっちゃわかりやすいし
598 名前:デフォルトの名無しさん mailto:sage [2019/09/13(金) 14:33:13.49 ID:FohQxIv6d.net] >>587 コンストラクタかTickイベント(初回のみ)でTimerのTagプロパティにMyClassインスタンスを設定 senderからTagに設定されているインスタンスを取得して利用するってやり方もある 1タイマー1MyClassって感じの設計ならこっちの方がいいかもね
599 名前:デフォルトの名無しさん mailto:sage [2019/09/13(金) 16:09:57.39 ID:GqasltTgM.net] 再利用性のないクラスの名前に拘り過ぎるのは 効率的に無駄だなと感じる ライブラリ用のクラスは拘るけどね
600 名前:デフォルトの名無しさん mailto:sage [2019/09/13(金) 17:07:26.51 ID:zz4VRjti0.net] >>588 レスサンクス だけど考えても理解できませんでした
601 名前:デフォルトの名無しさん mailto:sage [2019/09/13(金) 17:17:29.19 ID:GqasltTgM.net] これでいいじゃない private MyClass myClass = new MyClass(this); private void Timer1_Tick(object sender, EventArgs e) { myClass.//クラスの処理いろいろ }
602 名前:デフォルトの名無しさん [2019/09/13(金) 17:23:20.15 ID:65eTAicb0.net] マイコラスの嫁がかわいい
603 名前:デフォルトの名無しさん mailto:sage [2019/09/13(金) 17:47:41.70 ID:FohQxIv6d.net] >>590 コンストラクタで、 Timer1.Tag = new MyClass(this); イベントで var myClass = ((Timer)sender).Tag as MyClass; コンストラクタで作ったインスタンスがTimer1のイベントで使えるようになる これで理解出来そう?
604 名前:デフォルトの名無しさん [2019/09/13(金) 17:49:44.94 ID:XXPMNkq8a.net] >>590 たぶんこう var mc = (timer1.Tag ?? (timer1.Tag = new MyClass())) as MyClass; でもこんなアホなことやったらあかんw
605 名前:デフォルトの名無しさん mailto:sage [2019/09/13(金) 17:59:46.24 ID:FohQxIv6d.net] 捕捉でsenderの扱いに馴染みがなくて分かりずらいなら var myClass = Timer1.Tag as MyClass; って直接コントロールを見てもいいかな 10個のタイマーでそれぞれクラス作るとかだと、メンバに持つのが嫌になるからそういう時に便利
606 名前:デフォルトの名無しさん mailto:sage [2019/09/13(金) 21:09:16.91 ID:zz4VRjti0.net] >>591 サンクスです、やってみました //キーワード 'this' は現在のコンテキストでは使用できません。 thisがなければいけるのですが、 >>593 サンクスです、コンストラクタってMyClassでしょか? Timer1.Tag = new MyClass(this); //thisが受け付けてもらえません 仕方ないのでButton1_Clickに置きました var myClass = ((Timer)sender).Tag as MyClass; //myClassがNullになります var myClass = Timer1.Tag as MyClass; //こっちもNullになります >>594 サンクスです、うまく動きました でも正直あまり理解できてません 注:理解するのに時間がかかります
607 名前:デフォルトの名無しさん mailto:sage [2019/09/13(金) 21:48:16.79 ID:PFGdVlPv0.net] windows form で背景色を白から青にジョジョにアニメーションで変化させるには? 今のところコードは下記です。 void timer_Tick(object sender, EventArgs e){ // 白 255,255,255 // 黒 0,0,0 var a = textBox1.BackColor.A; var r = textBox1.BackColor.R; var g = textBox1.BackColor.G; var b = textBox1.BackColor.B; if (a == 255) { a = 1; } var a = a + 25; if (a >= 255) { a = 255; } var r = textBox1.BackColor.R - 25; if ( r <= 0) { r = 0; } var g = textBox1.BackColor.G - 25; if ( g <= 0 ) { g = 0; } var b = textBox1.BackColor.B + 25; if (textBox1.BackColor.B >= 255) { b = 255; } textBox1.BackColor = Color.FromArgb(a, r, g, b); // 終了条件チェック、 // 終了処理 }
608 名前:デフォルトの名無しさん mailto:sage [2019/09/13(金) 22:11:07.86 ID:YdWi/cYta.net] >>597 int counter = 0; void timer_Tick(object sender, EventArgs e) { counter++; counter %= 256; textBox1.BackColor = Color.FromArgb(255 - counter, 255 - counter, 255); }
609 名前:デフォルトの名無しさん mailto:sage [2019/09/13(金) 22:12:15.08 ID:Gf0j4OgCd.net] >>596 >>580 でMyClassにthis を渡しているから皆thisを渡してインスタンスを作ってんだけどthisいらないの? いらないならthisは消していいよ
610 名前:デフォルトの名無しさん mailto:sage [2019/09/13(金) 22:27:35.64 ID:zz4VRjti0.net] >>599 いやthisは欲しいです、Class内からtextboxコントロールのメソッド触りたいので form1渡してます
611 名前:デフォルトの名無しさん [2019/09/13(金) 23:44:37.81 ID:aO4dryeFa.net] >>597 やってみた public partial class Form1 : Form { private Stopwatch mStopwatch = new Stopwatch(); public Form1() { InitializeComponent(); } private Color BlendColor(Color a, Color b, double pos) { Func<int, int, int> blend = (i, j) => { var x = Math.Round((1 - pos) * i + pos * j, 0); return Math.Min(255, (int)x); }; var A = blend(a.A, b.A); var R = blend(a.R, b.R); var G = blend(a.G, b.G); var B = blend(a.B, b.B); return Color.FromArgb(A, R, G, B); }
612 名前:デフォルトの名無しさん [2019/09/13(金) 23:44:54.82 ID:aO4dryeFa.net] private void button1_Click(object sender, EventArgs e) { mStopwatch.Restart(); } private void timer1_Tick(object sender, EventArgs e) { var timeout = 5d; var elapse = Math.Min(timeout, mStopwatch.ElapsedMilliseconds / 1000d); var pos = elapse / timeout; BackColor = BlendColor(Color.White, Color.Blue, pos); } }
613 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 02:16:18.45 ID:BYSNLn3J0.net] >>600 コンストラクタやフィールドだとthisって使えないんだっけ? それならこれでいけるかな Tagの方も同じ感じでいけるはず private MyClass myClass; private void Timer1_Tick(object sender, EventArgs e) { if(myClass = null) {myClass = new MyClass(this);} myClass.//クラスの処理いろいろ }
614 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 09:11:10.12 ID:weYOKlpc0.net] >>603 れすさんくすです なるほど宣言と初期化をわけるのですね、うまく動きました
615 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 11:56:47.95 ID:vC+cN/7F0.net] Action<T>は値型という解釈で良いのでしょうか? var dic = new Dictionary<int, Action<float>>()という辞書に保持されているActionのメソッドを引いたり足したりしたいのですが、 下記のようにするとdicのvalueには反映されないようですが再度dicに追加してアップデートしないといけないということでしょうか? var action = dic[1]; action += method; // action.GetInvocationList().Lengthを調べるとちゃんと足されてる一方、dic[1].GetInvocationList().Lengthは変化なし
616 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 12:17:37.64 ID:iAxlaW7xa.net] デリゲートは参照型 action += method は文字通り action = action + method であり、結合後の新しいインスタンスが action に代入される デリゲート同士の + は String と同様に言語仕様によって特別扱いされており、Delegate.Combine メソッドの呼び出しに変換される ちなみにイベントに対する += は x.ev = x.ev + method ではなくプロパティと同様にxに対する特殊なメソッド呼び出しになる 作法的な話をすると、デリゲートのマルチキャストは歴史的経緯による遺物であり、イベントハンドラ以外には基本的に使わない方がいいよ
617 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 12:37:52.80 ID:vC+cN/7F0.net] なるほど、action += methodは、action = new Action(action + method)的な形ということだったんですね ありがとうございます
618 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 14:06:14.47 ID:nQc/7xFt0.net] Windows form だとちょっとした色変えるだけのエフェクト書くの大変。 iPhone swift だと 下記みたいな 2行 でかけるのに。 UIView.animate(withDuration: 0.5, delay: 0.0, options:[] , animations: { TextField.backgroundColor = .blue } , completion : { _ in TextField.backgroundColor = .white } ) Form のクラスメソッドに色、透明度、位置、回転、大きさとかを変化させるアニメーション系のメソッド追加してほしいね。
619 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 16:27:56.54 ID:y7dkXYFS0.net] >>608 そういう人はWPF使う方がええよ mvvmにこだわらなければそんな差ないし
620 名前:デフォルトの名無しさん [2019/09/15(日) 11:17:21.32 ID:ZbgEJrYza.net] 今でも業務系のASPって、MVCよりWeb formsのほうが多い?
621 名前:デフォルトの名無しさん mailto:sage [2019/09/15(日) 11:21:19.74 ID:0P7zcb1/0.net] >>610 多いと言うか更改されずに腫れ物システムとして生き残ってるのが多いよ
622 名前:デフォルトの名無しさん mailto:sage [2019/09/15(日) 11:23:22.76 ID:qUTb/lfg0.net] >>610 ASPとASP.NETは違うよ