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
321 名前:デフォルトの名無しさん mailto:sage [2019/08/17(土) 21:04:14.52 ID:qUgpJGd70.net] それなら「Rubyスレに行け」が流れ的に当然であるのに何故か「Java」 彼にとってサーバーサイドの言語は全部Java ほぼ「ゲーム機を全部ファミコンと呼ぶおかん」状態と考えるのが妥当と思われる
322 名前:デフォルトの名無しさん mailto:sage [2019/08/17(土) 22:31:29.74 ID:2lsOlPOTd.net] >>315 それはあまりにも苦しい擁護だな
323 名前:デフォルトの名無しさん mailto:sage [2019/08/17(土) 22:32:06.22 ID:fWrg11mTM.net] seleniumがjavaで書かれてるからじゃないの >>236 ->>238 のC++云々からの流れかと思ったけど
324 名前:デフォルトの名無しさん [2019/08/17(土) 22:34:51.12 ID:8QP5rwWB0.net] KeyValuePair c=func1(); cをnull判定できないんですがどうしたらいいですか? Myclass c=func2(); の場合、null判定できます。 クラスは出来て、KeyValuePairは出来ないのは何故ですか?
325 名前:デフォルトの名無しさん mailto:sage [2019/08/17(土) 22:35:45.47 ID:1som7JJwa.net] >>319 C# クラス 構造体 でググれ
326 名前:デフォルトの名無しさん mailto:sage [2019/08/17(土) 22:37:54.74 ID:RvVfsurb0.net] KeyValuePairにnullなんて入らないからな
327 名前:デフォルトの名無しさん mailto:sage [2019/08/17(土) 23:10:53.90 ID:u5xmISorM.net] >>314 以後アスペはNG
328 名前:デフォルトの名無しさん mailto:sage [2019/08/17(土) 23:12:11.34 ID:u5xmISorM.net] >>316 流石に頭が悪すぎるのでこれ以上会話するのは不可能
329 名前:デフォルトの名無しさん mailto:sage [2019/08/17(土) 23:22:57.32 ID:w7ZVAy9F0.net] >>319 func1をTryParseみたいにbool func1(out KeyValuePair c)にして値入れたくないときはfalseを返すようにしたら? 構造体にnullは入れられないし、どうせそのあとnullで分岐するでしょ
330 名前:デフォルトの名無しさん mailto:sage [2019/08/17(土) 23:30:37.14 ID:u5xmISorM.net] >>316 先走った場違いな発言を認めたくなくて必死過ぎ、こーゆう使えない部下は直ぐに切るからこいつは低収入確定
331 名前:デフォルトの名無しさん mailto:sage [2019/08/17(土) 23:35:04.26 ID:BwzrwDPv0.net] >>319 KeyValuePair? を返すようにしたらいい
332 名前:デフォルトの名無しさん mailto:sage [2019/08/17(土) 23:36:59.53 ID:+vBKVSmmM.net] >>325 無職のおっさんに言われてもなぁ
333 名前:251 mailto:sage [2019/08/17(土) 23:47:28.51 ID:fYRni8gj0.net] そりゃ、C#・Java は、静的言語で同じだから、 静的言語になれているなら、Selenium の話は、Java で聞くのがよい 動的言語なら、Ruby, Python で聞けばよい Seleniumデザインパターン&ベストプラクティス、2015、オライリー これは、Rubyでテストを書いた本 ウェブ系・HTML は基本、Ruby。 まあ、Java のSelenium の本も出てるけど Java は、Spring Boot か? 動的言語のGroovy じゃないのか?
334 名前:デフォルトの名無しさん mailto:sage [2019/08/18(日) 01:25:10.35 ID:KlRCzn4x0.net] javaの話が出てきても勘所がないから検討違いな粘着になるんだよな Seleniumについて知識があれば文献的に充実してるのはjavaだろうに
335 名前:デフォルトの名無しさん mailto:sage [2019/08/18(日) 03:58:12.87 ID:9i6q0zGn0.net] c#からc#をインタプリタで実行できるライブラリってありますか?
336 名前:デフォルトの名無しさん mailto:sage [2019/08/18(日) 06:08:49.00 ID:t6n5brFa0.net] >>330 https://ufcpp.net/study/csharp/cheatsheet/apscripting/ みたいな話か?
337 名前:デフォルトの名無しさん mailto:sage [2019/08/18(日) 13:41:29.71 ID:+4zzAGlV0.net] WinForms で質問です。 標準の Form から継承した MyForm を abstract で作りました。 この MyForm は abstract なのでデザインで開けません。 (ここまでOK) MyForm をもとに SubForm なるものを継承して作りました。 これには abstract は付けていないのですが、これもまたデザイナで開けません。 あまりに残念すぎる挙動だと思うのですが、これは仕様でしょうか。
338 名前:デフォルトの名無しさん mailto:sage [2019/08/18(日) 13:43:21.22 ID:+3q0UZxZ0.net] Visual Studio .NET (2002) から続く仕様だよ
339 名前:デフォルトの名無しさん mailto:sage [2019/08/18(日) 13:45:24.63 ID:jp7+H4+aM.net] .NETではフォームの継承は推奨されていません 共通化したい場合はユーザーコントロールを使用してください なお、WinFormsは既に開発が終了しており、今後改善される可能性はありません
340 名前:デフォルトの名無しさん mailto:sage [2019/08/18(日) 13:51:36
] [ここ壊れてます]
341 名前:.77 ID:+4zzAGlV0.net mailto: やっぱりですか。 デザイナが使えないと不便なので、MyForm 側にabstract 付けないで、virtual 定義しているのですが 継承先で「いじり必須」なものを忘れてしまうため、本当は abstract したいのですが・・ WinForms の開発が終わったって、世の中、VS で弄られてるソースの9割は WinForms だと思うんですけどねぇ [] [ここ壊れてます]
342 名前:デフォルトの名無しさん mailto:sage [2019/08/18(日) 13:57:02.56 ID:ET6qk6jL0.net] うちは自社開発企業だがFormsはとっくの昔に淘汰された Formsで作ってたアプリは全部WPFで作り直した
343 名前:デフォルトの名無しさん [2019/08/18(日) 14:04:52.38 ID:APnDI8yA0.net] visualstudioを利用しているのですが最近デバッグ時にフォームアプリを動かすと System.InvalidOperationException: '有効ではないスレッド間の操作: コントロールが作成されたスレッド以外のスレッドからコントロール 'hoge' がアクセスされました。' の様なエラーが出て止まる様になりました しかし出来たプログラムをふつうに動かす分には異常ありません 今まで作ってきた問題のなかったすべてのバージョンでこの様な現象が起こっています これは何が原因でしょうか?
344 名前:デフォルトの名無しさん [2019/08/18(日) 14:21:30.88 ID:/RKifLkIa.net] >>335 騙されたらあかんw 継承後のフォームもちゃんとデザイナで開けるし コントロールを追加したりいろいろ出来るよw フォームの継承なんて10年以上やってなかったが 今実際試して確認したから間違いない
345 名前:デフォルトの名無しさん mailto:sage [2019/08/18(日) 14:29:19.80 ID:MLAzMixE0.net] >>337 先日MSがWindowsUpdateでやらかしたのが原因で、結構話題になっているから検索すると見つかる 「windowsupdate vb」 で
346 名前:デフォルトの名無しさん mailto:sage [2019/08/18(日) 15:44:26.69 ID:+4zzAGlV0.net] >>338 「abstract な継承元から継承すると、継承先フォームがデザイナで開けない」 という意味でしたけど、こちらだと VS2019 でも叱られてしまいます。。
347 名前:デフォルトの名無しさん mailto:sage [2019/08/18(日) 15:45:05.69 ID:+4zzAGlV0.net] 継承元が abstract じゃない単純なファームの継承だったら、まったく問題ありません。
348 名前:デフォルトの名無しさん mailto:sage [2019/08/18(日) 17:17:03.03 ID:zvOpWkeBd.net] >>334 終了なんかしてないよ
349 名前:デフォルトの名無しさん [2019/08/18(日) 17:55:07.39 ID:/RKifLkIa.net] >>340 なるほど。 abstractにこだわる必要が本当にあるのかなとも思うけど、 何ならコンストラクタをprotectedにすりゃ機能的にはほぼ同じだね。 (abstractメンバーはもちろん書けないけど) これならそういう不具合は起こらないっぽい
350 名前:デフォルトの名無しさん mailto:sage [2019/08/18(日) 18:33:20.50 ID:5+yaTAKE0.net] 蕎麦とラーメン間違えるとかもう簡単ケータイにしたほうがいいんじゃね。 たぶんVPNとか使わわんだろうし。 俺もIntelだからもう日産もゴーヤチャンプルーも同じ味付けで食える。
351 名前:デフォルトの名無しさん [2019/08/18(日) 21:26:51.68 ID:37ku1J740.net] Keyvaluepairの.Keyをnull判定したら nullできました。 構造体だけどnull判定できましたが?? keyvalueopair本体はできないけど KeyまたはValueはnull判定できました。 何故???まぁ良かったんですけど
352 名前:デフォルトの名無しさん mailto:sage [2019/08/18(日) 21:29:43.77 ID:jp7+H4+aM.net] それはKeyプロパティが返した値をnull判定しているのであり、KeyValuePairが構造体であることは全く関係ない 直行する問題の分離ができない人はプログラミング向いてないよ
353 名前:デフォルトの名無しさん mailto:sage [2019/08/18(日) 21:32:13.83 ID:DxNAHPOT0.net] 構造体はnullにできないからKeyValuePair?使えって言ってんのに
354 名前:デフォルトの名無しさん mailto:sage [2019/08/18(日) 21:33:54.95 ID:DxNAHPOT0.net] 言っとくけど「?」は文字化けじゃないぞw
355 名前:デフォルトの名無しさん [2019/08/18(日) 21:37:51.98 ID:37ku1J740.net] >>346 ようはList<KeyValuePair<string,double>> "レタス" 100 "キャベツ"120 "トマト" 120 こういうリストで、ピーマンって探すと Keyがnullになってくれたので、良かったです。 KeyValuepairがnullじゃないのが不思議ですが null判定できてよかった
356 名前:デフォルトの名無しさん mailto:sage [2019/08/18(日) 21:46:55.40 ID:DxNAHPOT0.net] 構造体はnullにできないと何度も言われてるのになんで不思議に思うんだろう ピーマンを探すときのList.FirstOrDefault()の戻り値は KeyValuePairをデフォルトコンストラクタで初期化したものだよ
357 名前:デフォルトの名無しさん mailto:sage [2019/08/18(日) 21:48:35.09 ID:FVnfIX0p0.net] >>349 keyvaluepairは構造体 構造体にはnullが存在しない 構造体にnullが存在しないことと構造体の中身がどうなっているか関係ないので、中身がクラスであるならnullにもなりうる 君がやったことは構造体ではなくその中身がnullかどうかのチェックしただけ 構造体とクラスの違いが理解できないなら今後も躓くのでkeyvaluepair含め他の構造体の使用も封印したほうがマシ まぁintだって構造体だから全部避けるなんてことは無理だけど
358 名前:デフォルトの名無しさん mailto:sage [2019/08/18(日) 22:03:37.75 ID:0nN/LwEb0.net] くどくて性格が悪そうな文章だ
359 名前:デフォルトの名無しさん mailto:sage [2019/08/18(日) 23:28:35.24 ID:r1LRT6EBa.net] listに入れるならdictionaryでいいんじゃないか…?とか話を一切聞いてなかったりとかkeyvalue君のレス見てるといらつくし 説明してあげる>>351 は優しいだろ
360 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 00:48:43.25 ID:ODFt4ofXM.net] >>349 null返ってきたのはkeyの型(string型)の初期値がnullだからなんでねか?
361 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 02:37:59.55 ID:s7+bDgX20.net] >>327 きも
362 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 07:49:38.46 ID:2nNI8r3od.net] >>349 ピーマン探してnullが帰ってくるのはおかしいだろ。 ピーマン探したら見つからないのが正しくないか?
363 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 08:07:23.07 ID:D7o3OMEzM.net] ループ作ったやつ次第のような?
364 名前:デフォルトの名無しさん [2019/08/19(月) 10:35:33.11 ID:VzpEDBAc0.net] Form1以外のクラスでlistboxに入力したいのですが 他クラスで入力する方法って望ましくないのですか? 他に方法はあるのでしょうか?
365 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 10:48:05.33 ID:Le9xiHCt0.net] MVVMなら他クラスで用意するのが普通。 INotifyPropertyChangedとObservableCollectionでばっちりよ
366 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 10:55:08.87 ID:QArCM+jpp.net] >>356 松茸採りに行っても見つからなかったらバスケットは空で帰って来るしか無いだろ?
367 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 10:55:52.73 ID:QArCM+jpp.net] でもバスケットはあるから、バスケットの中の松茸の数がゼロになるんだよね?
368 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 11:52:38.83 ID:2nNI8r3od.net] バスケットが空なのと、バスケットにnullが入ってるのは違うんじゃねえかな? 参照型は瓶と水みたいな感じで、瓶だけ持って帰ってこれても、 値型みたいな、それ単体が実体のものは言うとおり松茸みたいなもんで、取りにいってなかったら何も持って帰って来れないと思うが。 無理矢理何か持たせるのがFirstOrDefaultで、坊主だった親父がとりあえず当たり障りのないものを魚屋で買って帰るようなもんでは? FirstOrDefaultは無かったときにnullを返すためにあるんじゃないんだから。 ちゃんとチェックしてから取ったほうがいいと思うよ。
369 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 12:00:12.26 ID:ODFt4ofXM.net] ちゃんとチェックしてからとるならFirst()でよくね?
370 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 12:01:25.55 ID:9Ob07fGvd.net] どうでもいい自分なりの思想を長々と書く人だね
371 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 12:07:05.62 ID:ZYeDXrpNM.net] ILで説明してくれ
372 名前:デフォルトの名無しさん [2019/08/19(月) 13:23:05.09 ID:VzpEDBAc0.net] >>358 なんですが誰かお願いします 別クラスでテキストボックスとかいじるのって普通のやり方ではないん
373 名前:でしょうか? [] [ここ壊れてます]
374 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 13:27:26.75 ID:ERfcd1se0.net] >>359 が返してくれてるだろ
375 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 13:34:49.71 ID:eHF4rC4A0.net] 別クラスでいじるって、 class Hoge { public void SetText(TextBox textBox, string text) { textBox.Text = text; } } みたいな? コントロールを外部に渡すというのはまあ一般的ではないな
376 名前:デフォルトの名無しさん [2019/08/19(月) 13:36:41.01 ID:VzpEDBAc0.net] >>359 返してくださったのはありがたいんですが その3つの単語全て知らなくて、ググってみても高度すぎてわかりません コンソールアプリケーションをフォームアプリケーションに移植しようとしているのですが Console.Write()で出力していたものをlistBoxやtextBoxに出力したいのですが出来なくて困っております どうかアドバイスお願いします
377 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 13:44:13.47 ID:9Ob07fGvd.net] 外部でstringの配列なりListなり作った上でそれを ListBox.DataSourceプロパティにセットすればいいんじゃないの
378 名前:デフォルトの名無しさん [2019/08/19(月) 13:56:34.58 ID:eDOlyF+5a.net] >>369 ■ 選択肢1 FormにAddToLogみたいなメソッドを作ってConsole.WriteLineを LogForm.AddToLog ■ 選択肢2 Console.WriteLineを、記録する文字列を通知するイベントに置き換える。 Formはそのイベントを拾ってListBoxに表示 後者を推奨 基本的にUIの参照を握らせるのは悪い手
379 名前:デフォルトの名無しさん [2019/08/19(月) 14:04:49.07 ID:VzpEDBAc0.net] 移植したいコンソールアプリ class Program { static void Main(string[] args) { var op = new Output(); op.MainProcess(400); Console.Read(); } } public class Output { public override int MainProcess(int count) { for (int col = 0; col < count; col++) Console.Write(col); } }
380 名前:デフォルトの名無しさん [2019/08/19(月) 14:06:13.39 ID:VzpEDBAc0.net] 作ってみたフォームアプリ public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { var op = new Output(); op.MainProcess(400); } } public class Output { public override int MainProcess(int count) { for (int col = 0; col < count; col++) listBox1.Items.Add(col);//←ここが動かない } } こんな感じです >>371 ありがとうございます。さっそく試してみます
381 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 15:32:03.08 ID:ERfcd1se0.net] なんでいきなりバックグラウンドワーカーが出てきてるか知らんけど、ドゥーワークは別スレッドで実行する内容を記載するところで、UIスレッドにアクセスしたらダメ→コントロールを触ったらダメ リストボックスにアクセスしたかったらリポートプログレスもしくはコンプリートでUIスレッドにマーシャリングしてから
382 名前:デフォルトの名無しさん [2019/08/19(月) 16:32:24.93 ID:VzpEDBAc0.net] 簡略化して書いていますが凄い長い計算なので計算中でもプログラムが反応する様にbackgroundWorkerにしています backgroundWorkerかでなくとも、他クラスからフォームをいじるということが出来なくて困っています
383 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 17:09:34.09 ID:2nNI8r3od.net] 普通にinvokeしなよ。
384 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 17:49:40.07 ID:VD+/iXFd0.net] >>375 1.他のフォームからコントロールを操作する https://dobon.net/vb/dotnet/form/accessanotherformdata.html 2.BackgroundWorkerからコントロール(UIスレッド)を沿操作する https://dobon.net/vb/dotnet/programing/progressdialogbw.html またはInvoke 今の段階では1+2をやりたいんだよね 設計的なものに口だすのは良くないけど参考までに >凄い長い計算なので計算中でもプログラムが反応する様に ListBoxの一つのアイテムごとに時間がかかるのならMainProcessでループで一気にAddせずに BackgroundWorkerの中で「計算実行→ReportProgressで別フォームListBoxにAdd」をループさ
385 名前:せてもいいんじゃないの [] [ここ壊れてます]
386 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 17:55:50.15 ID:V7QYb24CM.net] >>366 ログ出したいん? なんかプロパティのフラグ立てる必要なかったっけ?
387 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 18:04:30.50 ID:V7QYb24CM.net] 関係なかった 自分が昔出なかったのは AppendTextしてなかったからだったw すまんかった
388 名前:デフォルトの名無しさん [2019/08/19(月) 20:31:39.57 ID:VzpEDBAc0.net] Invoke調べてみました。いけそうな気がしますが書き方が難しいです 上記のコードの場合どのように記述すれば良いのでしょうか?
389 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 20:43:11.70 ID:y72D5AUNp.net] >>380 ここおススメやぞ https://blogs.msdn.microsoft.com/nakama/2009/03/30/part-1-windows/
390 名前:デフォルトの名無しさん [2019/08/19(月) 20:46:44.95 ID:cJsYlnhia.net] パッと見で適当だけど、formにコントロールの変更記述して、コールバック登録してtaskはしらせればいいの違うのか?invokeは当然
391 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 21:00:04.04 ID:Vps+pUHe0.net] >>380 delegate用のメソッド作ってdelegateにセットしてinvoke https://www.atmarkit.co.jp/ait/articles/0506/17/news111.html
392 名前:デフォルトの名無しさん [2019/08/19(月) 22:54:50.46 ID:aQCsW5pK0.net] doubleって整数のほうに偏りがあったら 小数部分は短い精度になるんですが、これ何とかなりませんか? doubleは精度高いから小数点第5位とか精度余裕だろwwwwwwwwwww 989〜〜〜132.1235212596 算出結果 989〜〜〜132.1235312314 正解 え??????????? ちょwwwwww 助けてください
393 名前:デフォルトの名無しさん [2019/08/19(月) 23:06:59.10 ID:eDOlyF+5a.net] >>384 何を言ってるか人に分かるように書かないと誰も答えようがないよw 一般論として、演算誤差を累積させずに 演算可能かどうかはどういう演算をしてるかによるので、 具体的な処理が分からないと何とも言えん
394 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 23:27:14.16 ID:9Ob07fGvd.net] decimal型使えば
395 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 23:36:21.05 ID:0KlGy2IO0.net] >>384 浮動小数点とはそういうもの 小数点以下何桁かではなく全体で何桁か
396 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 23:57:36.54 ID:0eZQgVij0.net] 分数型クラスを自分で作ってとっとけ
397 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 23:59:07.58 ID:HKOIeNMl0.net] Seleniumを極めよう
398 名前:デフォルトの名無しさん mailto:sage [2019/08/20(火) 00:07:25.79 ID:VMXKYR4od.net] Form1, Form2, CounterForm があります。 CounterForm にカウントを表示して、0 になったら、Form1 か Form2 のメソッドを実行するにはどうしたら良いでしょうか? やりたいこと 5. 4. 3. 2. 1. 0 と表示 → form1.DoSomething(); CounterForm と Form1 の部分はできているのですが、 複数class間で通知する方法がよくわかりません。
399 名前:デフォルトの名無しさん mailto:sage [2019/08/20(火) 00:22:58.41 ID:sL7gwS880.net] >>390 var f1 = new Form1(); var f2 = new From2(); foreach(var i in Enumerable.Range(0, 5).Reverse()) { await Task.Delay(1*1000); if(0 == i) f1.DoDomething(); // f2? } Form1とForm2のメソッド呼び分け条件を提示して。 あと >複数class間で通知する方法がよくわかりません。 の意味が分からないんでもう少し詳しく
400 名前:デフォルトの名無しさん mailto:sage [2019/08/20(火) 01:06:30.58 ID:yjnOK/Bv0.net] 「通知」…もし表示済みのフォームをあとからいじりたい場合、 public static class static1 { public static form1 form1; //スタティッククラスのフィールドを用意して、 ------------------------------------- public partial class form1 : Form { public form1() { static1.form1 = this; //各自のインスタンスを各自のコンストラクタで設定しておく ------------------------------------- public partial class CounterForm : Form { public void hoge() { try { Exception er = null; this.Invoke( (MethodInvoker)delegate { //デリゲートせずに外からフォームをいじるとエラーになることがある try { static1.form1.DoSomething(); //スタティッククラスのフィールドを経由すると表示済のものがいじれる } catch( Exception e ) { er = e; } //ちなみにデリゲート内のエラーは外側でキャッチできないので、 } ); if( er != null ) { throw er; } //変数を経由して外側でスローする
401 名前:デフォルトの名無しさん [2019/08/20(火) 01:15:05.72 ID:zheL5RcIa.net] >>390 Formだろうが何だろうが、操作したい側が操作対象の参照を握れば良いだけだけど、 親子関係が成立しているとか特殊な前提がなければ、Formが別のFormの参照を 握るのはあんまり良くない。 原則論を言えばそもそもFormにUIと無関係の処理を書く時点で間違っている。
402 名前:デフォルトの名無しさん mailto:sage [2019/08/20(火) 07:52:56.91 ID:yjnOK/Bv0.net] UIと関係あるからフォームなんだろうけど… 非同期処理中にポップアップが出て、その間もメインは触れるが、終わるとメインが変更される なんてことはよくある 書式設定的なのも別フォームから別フォームをいじるわけだし 前のいじり方を残すために、閉じても隠すだけで、同じインスタンスを再表示したい場合とか
403 名前:デフォルトの名無しさん mailto:sage [2019/08/20(火) 09:26:58.30 ID:+NAZ1HN+M.net] フォームと無関係な〜って書いてあるぞ そんなことより全角半角がきもい
404 名前:デフォルトの名無しさん mailto:sage [2019/08/20(火) 12:03:48.15 ID:NghMzgaN0.net] 対象のフレームワーク:Framework 4.0 でコンパイルした自作 DLL があります。 この DLL を 対象のフレームワーク:Framework 4.8 なプロジェクトから参照して使用したとき、 DLL の中はどっちで動くのでしょうか? たとえば自作DLL内で、DataGridView から継承した DataGridViewEx を作ってあったとして これを 4.8 なプロジェクトで利用したとき、DataGridViewEx 内で 4.0 の DataGridView が使われるのか、4.8 の DataGridView が使われるのか、って意味です。
405 名前:デフォルトの名無しさん mailto:sage [2019/08/20(火) 12:10:21.33 ID:mC8iPjWhd.net] 自作DLL内でDataGridViewの参照を特定バージョンにしておけば4.0になるしそうじゃなければ4.8
406 名前:デフォルトの名無しさん mailto:sage [2019/08/20(火) 12:17:12.47 ID:NghMzgaN0.net] 自作DLL 側の System.Windows.Forms を見たら 特定バージョン:false になっていたので、呼ばれる側のバージョンの System.Windows.Forms.dll が使われるってことですね。 Framework 4.8 用に新たに作らないといけないかと思ったのですが、その心配ないみたいで安心しました。
407 名前:デフォルトの名無しさん mailto:sage [2019/08/21(水) 00:27:12.96 ID:7whQ/iRu0.net] あ、間違えた × this.Invoke( (MethodInvoker)delegate { 〇 static1.form1.Invoke( (MethodInvoker)delegate { (thisは自フォーム内のマルチスレッド部分のソースだった) カウントダウンにマルチスレッドが必要とは限らんが むしろモーダルだったり でも「オブジェクトがあれば必ず「通知」できる」という方法は確立しといた方が、オブジェクト指向っぽい クラスオブジェクト指向の前にメッセージオブジェクト指向があったので(Win32API) メッセージ、つまり「通知」
408 名前:デフォルトの名無しさん mailto:sage [2019/08/21(水) 00:57:19.98 ID:CGK7jfA0d.net] >>392 解答どうもありがとうございます。 event かデリゲートで解決できそうです。 // Form1 private void CountDownBtn_Click(object sender, EventArgs e) { var countdownForm = new MYCountDownForm(); // 4 3 2 1 0と表示してから、下に行きたいが、 // これだとカウント 0 を待たずにすぐ下に行く。 countdownForm.Show(); // このクラスのいろいろな処理 }
409 名前:デフォルトの名無しさん mailto:sage [2019/08/21(水) 01:36:11.80 ID:7whQ/iRu0.net] >>400 そっちかw そっちは「モーダルフォーム」でググると出てくると思う その方が普通に基本
410 名前:デフォルトの名無しさん mailto:sage [2019/08/22(木) 16:28:36.46 ID:tih7LC2d0.net] APIが公開されていなくてもスクレイピングして非公開websoketに接続したいのですが、 解析からトークンなど必要なheader情報取得すればできるものですか?
411 名前:デフォルトの名無しさん [2019/08/22(木) 16:50:43.33 ID:xQsiKIbM0.net] 出来るけど利用規約読め API経由だとセーフで API経由しないと逮捕とか書いてあるから
412 名前:デフォルトの名無しさん [2019/08/22(木) 16:57:22.84 ID:erkZnaOI0.net] >>402 https://elaws.e-gov.go.jp/search/elawsSearch/elaws_search/lsg0500/detail?lawId=411AC0000000128
413 名前:デフォルトの名無しさん mailto:sage [2019/08/22(木) 17:10:49.32 ID:NpAwFZ6qM.net] >>404 条文ぐらい示してやれよ
414 名前:デフォルトの名無しさん mailto:sage [2019/08/22(木) 17:59:59.30 ID:90PkXrDL0.net] 色んなところで迷惑なヤローだな
415 名前:デフォルトの名無しさん mailto:sage [2019/08/22(木) 21:54:01.43 ID:rNXeNA230.net] >>402 非公開だろうがクライアント側で処理してるのには変わりないんだから お前が本当にブラウザになり切れればやれるよ 単純に能力と手間の問題だ
416 名前:デフォルトの名無しさん mailto:sage [2019/08/22(木) 22:05:00.16 ID:yaxmcT7W0.net] この質問結構前からいたるところで見る気がするんだけどただのマルチ?
417 名前:デフォルトの名無しさん mailto:sage [2019/08/22(木) 23:55:52.03 ID:W1llczT4d.net] >>400 >>401 とりあえず自力でできたのでソース抜粋 1 // Form1 呼び出し側 private void CountDownBtn_Click(object sender, EventArgs e){ var countDownForm = new MYCountDownForm(7); countDownForm.ZeroReached += OnCounterZeroCallBack; countDownForm.Show(); } // コールバック private void OnCounterZeroCallBack(Object sender, DestReachedEventArgs e){ // UI 更新 }
418 名前:デフォルトの名無しさん mailto:sage [2019/08/23(金) 00:00:27.51 ID:RwBPjFxxd.net] ソース抜粋 2 // MYCountDownForm private System.Windows.Forms.Timer countDownTimer; public int timeLeft; public delegate void ZeroReachedEventHandler(Object sender, ZeroReachedEventArgs e); public event ZeroReachedEventHandler ZeroReached; void Timer_Tick(object sender, EventArgs e){ if (timeLeft >= 1){ timeLabel.Text = this.timeLeft.ToString(); timeLeft--; } else if (this.timeLeft <= 0){ timeLabel.Text = this.timeLeft.ToString(); var args = new ZeroReachedEventArgs(); args.TimeReached = DateTime.Now; OnDestReached(args); this.Close(); } } // END Timer_Tick protected virtual void OnZeroReached(ZeroReachedEventArgs e){ var handler = ZeroReached; if (handler != null){ handler(this, e); } } } public class ZeroReachedEventArgs : EventArgs { // コンストラクタないけどいいの? public DateTime TimeReached { get; set; } }
419 名前:デフォルトの名無しさん [2019/08/24(土) 00:16:35.07 ID:EZ15JXYo0.net] アホな質問ばっかですいません 光速の計算をしたいんですが、doubleでは無理ですか? decimalは使いません お願いします。小数点以下が信用できません。
420 名前:デフォルトの名無しさん mailto:sage [2019/08/24(土) 00:22:03.18 ID:ka7Yl/470.net] >>411 お前さんが使おうとしている計算方法や欲しい精度とか示さんと答えられんだろうよ
421 名前:デフォルトの名無しさん mailto:sage [2019/08/24(土) 01:21:02.23 ID:g8XGZa5Z0.net] >>411