ふらっと C#,C♯,C#(初心者用) Part144

■ このスレッドは過去ログ倉庫に格納されています
2019/07/16(火) 15:36:23.74ID:i1fbuZ/pM
!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/

■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/
■前スレ
ふらっと C#,C♯,C#(初心者用) Part143
https://mevius.5ch.net/test/read.cgi/tech/1558002486/

■情報源
https://docs.microsoft.com/ja-jp/dotnet/standard/class-libraries
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index
https://docs.microsoft.com/en-us/dotnet/standard/class-libraries
http://referencesource.microsoft.com/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2019/08/16(金) 21:32:15.51ID:HNLZHpWT0
>>303
javaの拡張子は【.java】だよ
【.js】は、思いっきりJavaScriptの拡張子
少しググって勉強してね
305デフォルトの名無しさん (ワッチョイ 2b2d-QMAU)
垢版 |
2019/08/16(金) 23:41:19.50ID:AADFbgN80
プログラム板住人は煽られるとすぐムキになるから、転載アフィブロガーの種まきに最適な場所になっちまってんだろう
2019/08/17(土) 00:34:58.82ID:1HSNgy8G0
Seleniumって便利だな
もっとユーザが増えてほしい
2019/08/17(土) 02:16:51.47ID:EsYhqRXq0
>>304
え?全然噛み合わない。
なにこのアスペ
2019/08/17(土) 02:31:35.40ID:fYRni8gj0
Ruby on Rails では、作者のDHH が、2014年に「TDD(テスト駆動開発) is dead」と発言して、
ユニットテストから、Selenium を使った、E2E(end to end)テストへ移行した!

それで、Rails 6 では、
DHH のいるBasecamp 社から、GitHub へ移籍した、Eileen Uchitelle によって、
テストを複数CPU コアで、並列実行する機能が実装された!
2019/08/17(土) 10:48:29.26ID:uGEbzf6ra
気狂いしかいねーのかよ
2019/08/17(土) 12:36:57.19ID:zUPT7dbd0
見てわかんねーのか
2019/08/17(土) 13:25:59.90ID:Mqg+a2XP0
暑さで脳味噌が溶けちまったんだろう
2019/08/17(土) 14:35:53.37ID:sCIOh4/p0
なんでRubyスレで言わねえんだ?
2019/08/17(土) 15:08:20.60ID:BwzrwDPv0
>>303
なんでJavaのつもりで書く必要があったの?
2019/08/17(土) 15:55:56.68ID:qUgpJGd70
>>307
あんたの272の近辺にはJavaの話は全く出てきていないが、もしかするとRubyがJavaだと思った?
2019/08/17(土) 19:21:30.41ID:lWdyvSQl0
エスパーすると、ASP.NETがあるがデスクトップアプリがメインだったC#よりまだJavaスレの方がまだselenium詳しそうなやつ多そうだから、せめてjavaスレ行けって事だろ。
ほんとこれぐらいもエスパーできなきゃアホやろ
2019/08/17(土) 21:04:14.52ID:qUgpJGd70
それなら「Rubyスレに行け」が流れ的に当然であるのに何故か「Java」
彼にとってサーバーサイドの言語は全部Java
ほぼ「ゲーム機を全部ファミコンと呼ぶおかん」状態と考えるのが妥当と思われる
2019/08/17(土) 22:31:29.74ID:2lsOlPOTd
>>315
それはあまりにも苦しい擁護だな
2019/08/17(土) 22:32:06.22ID:fWrg11mTM
seleniumがjavaで書かれてるからじゃないの
>>236->>238のC++云々からの流れかと思ったけど
319デフォルトの名無しさん (ワッチョイ d968-2U8j)
垢版 |
2019/08/17(土) 22:34:51.12ID:8QP5rwWB0
KeyValuePair c=func1();
cをnull判定できないんですがどうしたらいいですか?
Myclass c=func2();
の場合、null判定できます。

クラスは出来て、KeyValuePairは出来ないのは何故ですか?
2019/08/17(土) 22:35:45.47ID:1som7JJwa
>>319
C# クラス 構造体
でググれ
2019/08/17(土) 22:37:54.74ID:RvVfsurb0
KeyValuePairにnullなんて入らないからな
2019/08/17(土) 23:10:53.90ID:u5xmISorM
>>314
以後アスペはNG
2019/08/17(土) 23:12:11.34ID:u5xmISorM
>>316
流石に頭が悪すぎるのでこれ以上会話するのは不可能
2019/08/17(土) 23:22:57.32ID:w7ZVAy9F0
>>319
func1をTryParseみたいにbool func1(out KeyValuePair c)にして値入れたくないときはfalseを返すようにしたら?
構造体にnullは入れられないし、どうせそのあとnullで分岐するでしょ
2019/08/17(土) 23:30:37.14ID:u5xmISorM
>>316
先走った場違いな発言を認めたくなくて必死過ぎ、こーゆう使えない部下は直ぐに切るからこいつは低収入確定
2019/08/17(土) 23:35:04.26ID:BwzrwDPv0
>>319
KeyValuePair?
を返すようにしたらいい
2019/08/17(土) 23:36:59.53ID:+vBKVSmmM
>>325
無職のおっさんに言われてもなぁ
2019/08/17(土) 23:47:28.51ID:fYRni8gj0
そりゃ、C#・Java は、静的言語で同じだから、
静的言語になれているなら、Selenium の話は、Java で聞くのがよい

動的言語なら、Ruby, Python で聞けばよい

Seleniumデザインパターン&ベストプラクティス、2015、オライリー
これは、Rubyでテストを書いた本

ウェブ系・HTML は基本、Ruby。
まあ、Java のSelenium の本も出てるけど

Java は、Spring Boot か?
動的言語のGroovy じゃないのか?
2019/08/18(日) 01:25:10.35ID:KlRCzn4x0
javaの話が出てきても勘所がないから検討違いな粘着になるんだよな
Seleniumについて知識があれば文献的に充実してるのはjavaだろうに
2019/08/18(日) 03:58:12.87ID:9i6q0zGn0
c#からc#をインタプリタで実行できるライブラリってありますか?
2019/08/18(日) 06:08:49.00ID:t6n5brFa0
>>330
https://ufcpp.net/study/csharp/cheatsheet/apscripting/

みたいな話か?
2019/08/18(日) 13:41:29.71ID:+4zzAGlV0
WinForms で質問です。
標準の Form から継承した MyForm を abstract で作りました。
この MyForm は abstract なのでデザインで開けません。
(ここまでOK)

MyForm をもとに SubForm なるものを継承して作りました。
これには abstract は付けていないのですが、これもまたデザイナで開けません。
あまりに残念すぎる挙動だと思うのですが、これは仕様でしょうか。
2019/08/18(日) 13:43:21.22ID:+3q0UZxZ0
Visual Studio .NET (2002) から続く仕様だよ
2019/08/18(日) 13:45:24.63ID:jp7+H4+aM
.NETではフォームの継承は推奨されていません
共通化したい場合はユーザーコントロールを使用してください
なお、WinFormsは既に開発が終了しており、今後改善される可能性はありません
2019/08/18(日) 13:51:36.77ID:+4zzAGlV0
やっぱりですか。

デザイナが使えないと不便なので、MyForm 側にabstract 付けないで、virtual 定義しているのですが
継承先で「いじり必須」なものを忘れてしまうため、本当は abstract したいのですが・・

WinForms の開発が終わったって、世の中、VS で弄られてるソースの9割は WinForms だと思うんですけどねぇ
2019/08/18(日) 13:57:02.56ID:ET6qk6jL0
うちは自社開発企業だがFormsはとっくの昔に淘汰された
Formsで作ってたアプリは全部WPFで作り直した
337デフォルトの名無しさん (ワッチョイ 7b05-K1Ve)
垢版 |
2019/08/18(日) 14:04:52.38ID:APnDI8yA0
visualstudioを利用しているのですが最近デバッグ時にフォームアプリを動かすと
System.InvalidOperationException: '有効ではないスレッド間の操作: コントロールが作成されたスレッド以外のスレッドからコントロール 'hoge' がアクセスされました。'
の様なエラーが出て止まる様になりました
しかし出来たプログラムをふつうに動かす分には異常ありません
今まで作ってきた問題のなかったすべてのバージョンでこの様な現象が起こっています
これは何が原因でしょうか?
338デフォルトの名無しさん (アウアウウー Sa5d-woyF)
垢版 |
2019/08/18(日) 14:21:30.88ID:/RKifLkIa
>>335
騙されたらあかんw

継承後のフォームもちゃんとデザイナで開けるし
コントロールを追加したりいろいろ出来るよw

フォームの継承なんて10年以上やってなかったが
今実際試して確認したから間違いない
2019/08/18(日) 14:29:19.80ID:MLAzMixE0
>>337
先日MSがWindowsUpdateでやらかしたのが原因で、結構話題になっているから検索すると見つかる
「windowsupdate vb」 で
2019/08/18(日) 15:44:26.69ID:+4zzAGlV0
>>338
「abstract な継承元から継承すると、継承先フォームがデザイナで開けない」
という意味でしたけど、こちらだと VS2019 でも叱られてしまいます。。
2019/08/18(日) 15:45:05.69ID:+4zzAGlV0
継承元が abstract じゃない単純なファームの継承だったら、まったく問題ありません。
2019/08/18(日) 17:17:03.03ID:zvOpWkeBd
>>334
終了なんかしてないよ
343デフォルトの名無しさん (アウアウウー Sa5d-woyF)
垢版 |
2019/08/18(日) 17:55:07.39ID:/RKifLkIa
>>340
なるほど。

abstractにこだわる必要が本当にあるのかなとも思うけど、
何ならコンストラクタをprotectedにすりゃ機能的にはほぼ同じだね。
(abstractメンバーはもちろん書けないけど)

これならそういう不具合は起こらないっぽい
2019/08/18(日) 18:33:20.50ID:5+yaTAKE0
蕎麦とラーメン間違えるとかもう簡単ケータイにしたほうがいいんじゃね。
たぶんVPNとか使わわんだろうし。
俺もIntelだからもう日産もゴーヤチャンプルーも同じ味付けで食える。
345デフォルトの名無しさん (ワッチョイ d968-2U8j)
垢版 |
2019/08/18(日) 21:26:51.68ID:37ku1J740
Keyvaluepairの.Keyをnull判定したら
nullできました。

構造体だけどnull判定できましたが??
keyvalueopair本体はできないけど
KeyまたはValueはnull判定できました。

何故???まぁ良かったんですけど
2019/08/18(日) 21:29:43.77ID:jp7+H4+aM
それはKeyプロパティが返した値をnull判定しているのであり、KeyValuePairが構造体であることは全く関係ない
直行する問題の分離ができない人はプログラミング向いてないよ
2019/08/18(日) 21:32:13.83ID:DxNAHPOT0
構造体はnullにできないからKeyValuePair?使えって言ってんのに
2019/08/18(日) 21:33:54.95ID:DxNAHPOT0
言っとくけど「?」は文字化けじゃないぞw
349デフォルトの名無しさん (ワッチョイ d968-2U8j)
垢版 |
2019/08/18(日) 21:37:51.98ID:37ku1J740
>>346
ようはList<KeyValuePair<string,double>>

"レタス" 100
"キャベツ"120
"トマト" 120

こういうリストで、ピーマンって探すと
Keyがnullになってくれたので、良かったです。
KeyValuepairがnullじゃないのが不思議ですが
null判定できてよかった
2019/08/18(日) 21:46:55.40ID:DxNAHPOT0
構造体はnullにできないと何度も言われてるのになんで不思議に思うんだろう
ピーマンを探すときのList.FirstOrDefault()の戻り値は
KeyValuePairをデフォルトコンストラクタで初期化したものだよ
2019/08/18(日) 21:48:35.09ID:FVnfIX0p0
>>349
keyvaluepairは構造体
構造体にはnullが存在しない
構造体にnullが存在しないことと構造体の中身がどうなっているか関係ないので、中身がクラスであるならnullにもなりうる
君がやったことは構造体ではなくその中身がnullかどうかのチェックしただけ
構造体とクラスの違いが理解できないなら今後も躓くのでkeyvaluepair含め他の構造体の使用も封印したほうがマシ
まぁintだって構造体だから全部避けるなんてことは無理だけど
2019/08/18(日) 22:03:37.75ID:0nN/LwEb0
くどくて性格が悪そうな文章だ
2019/08/18(日) 23:28:35.24ID:r1LRT6EBa
listに入れるならdictionaryでいいんじゃないか…?とか話を一切聞いてなかったりとかkeyvalue君のレス見てるといらつくし
説明してあげる>>351は優しいだろ
2019/08/19(月) 00:48:43.25ID:ODFt4ofXM
>>349
null返ってきたのはkeyの型(string型)の初期値がnullだからなんでねか?
2019/08/19(月) 02:37:59.55ID:s7+bDgX20
>>327
きも
2019/08/19(月) 07:49:38.46ID:2nNI8r3od
>>349
ピーマン探してnullが帰ってくるのはおかしいだろ。
ピーマン探したら見つからないのが正しくないか?
2019/08/19(月) 08:07:23.07ID:D7o3OMEzM
ループ作ったやつ次第のような?
358デフォルトの名無しさん (ワッチョイ 7b05-K1Ve)
垢版 |
2019/08/19(月) 10:35:33.11ID:VzpEDBAc0
Form1以外のクラスでlistboxに入力したいのですが
他クラスで入力する方法って望ましくないのですか?
他に方法はあるのでしょうか?
2019/08/19(月) 10:48:05.33ID:Le9xiHCt0
MVVMなら他クラスで用意するのが普通。

INotifyPropertyChangedとObservableCollectionでばっちりよ
2019/08/19(月) 10:55:08.87ID:QArCM+jpp
>>356
松茸採りに行っても見つからなかったらバスケットは空で帰って来るしか無いだろ?
2019/08/19(月) 10:55:52.73ID:QArCM+jpp
でもバスケットはあるから、バスケットの中の松茸の数がゼロになるんだよね?
2019/08/19(月) 11:52:38.83ID:2nNI8r3od
バスケットが空なのと、バスケットにnullが入ってるのは違うんじゃねえかな?
参照型は瓶と水みたいな感じで、瓶だけ持って帰ってこれても、
値型みたいな、それ単体が実体のものは言うとおり松茸みたいなもんで、取りにいってなかったら何も持って帰って来れないと思うが。

無理矢理何か持たせるのがFirstOrDefaultで、坊主だった親父がとりあえず当たり障りのないものを魚屋で買って帰るようなもんでは?

FirstOrDefaultは無かったときにnullを返すためにあるんじゃないんだから。
ちゃんとチェックしてから取ったほうがいいと思うよ。
2019/08/19(月) 12:00:12.26ID:ODFt4ofXM
ちゃんとチェックしてからとるならFirst()でよくね?
2019/08/19(月) 12:01:25.55ID:9Ob07fGvd
どうでもいい自分なりの思想を長々と書く人だね
2019/08/19(月) 12:07:05.62ID:ZYeDXrpNM
ILで説明してくれ
366デフォルトの名無しさん (ワッチョイ 7b05-K1Ve)
垢版 |
2019/08/19(月) 13:23:05.09ID:VzpEDBAc0
>>358なんですが誰かお願いします
別クラスでテキストボックスとかいじるのって普通のやり方ではないんでしょうか?
2019/08/19(月) 13:27:26.75ID:ERfcd1se0
>>359が返してくれてるだろ
2019/08/19(月) 13:34:49.71ID:eHF4rC4A0
別クラスでいじるって、
class Hoge {
public void SetText(TextBox textBox, string text) { textBox.Text = text; }
}
みたいな?
コントロールを外部に渡すというのはまあ一般的ではないな
369デフォルトの名無しさん (ワッチョイ 7b05-K1Ve)
垢版 |
2019/08/19(月) 13:36:41.01ID:VzpEDBAc0
>>359
返してくださったのはありがたいんですが
その3つの単語全て知らなくて、ググってみても高度すぎてわかりません
コンソールアプリケーションをフォームアプリケーションに移植しようとしているのですが
Console.Write()で出力していたものをlistBoxやtextBoxに出力したいのですが出来なくて困っております
どうかアドバイスお願いします
2019/08/19(月) 13:44:13.47ID:9Ob07fGvd
外部でstringの配列なりListなり作った上でそれを
ListBox.DataSourceプロパティにセットすればいいんじゃないの
371デフォルトの名無しさん (アウアウウー Sa5d-woyF)
垢版 |
2019/08/19(月) 13:56:34.58ID:eDOlyF+5a
>>369
■ 選択肢1
FormにAddToLogみたいなメソッドを作ってConsole.WriteLineを
LogForm.AddToLog

■ 選択肢2
Console.WriteLineを、記録する文字列を通知するイベントに置き換える。
Formはそのイベントを拾ってListBoxに表示

後者を推奨
基本的にUIの参照を握らせるのは悪い手
372デフォルトの名無しさん (ワッチョイ 7b05-K1Ve)
垢版 |
2019/08/19(月) 14:04:49.07ID:VzpEDBAc0
移植したいコンソールアプリ
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);
}
}
373デフォルトの名無しさん (ワッチョイ 7b05-K1Ve)
垢版 |
2019/08/19(月) 14:06:13.39ID:VzpEDBAc0
作ってみたフォームアプリ
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
ありがとうございます。さっそく試してみます
2019/08/19(月) 15:32:03.08ID:ERfcd1se0
なんでいきなりバックグラウンドワーカーが出てきてるか知らんけど、ドゥーワークは別スレッドで実行する内容を記載するところで、UIスレッドにアクセスしたらダメ→コントロールを触ったらダメ
リストボックスにアクセスしたかったらリポートプログレスもしくはコンプリートでUIスレッドにマーシャリングしてから
375デフォルトの名無しさん (ワッチョイ 7b05-K1Ve)
垢版 |
2019/08/19(月) 16:32:24.93ID:VzpEDBAc0
簡略化して書いていますが凄い長い計算なので計算中でもプログラムが反応する様にbackgroundWorkerにしています
backgroundWorkerかでなくとも、他クラスからフォームをいじるということが出来なくて困っています
2019/08/19(月) 17:09:34.09ID:2nNI8r3od
普通にinvokeしなよ。
2019/08/19(月) 17:49:40.07ID:VD+/iXFd0
>>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」をループさせてもいいんじゃないの
2019/08/19(月) 17:55:50.15ID:V7QYb24CM
>>366
ログ出したいん?
なんかプロパティのフラグ立てる必要なかったっけ?
2019/08/19(月) 18:04:30.50ID:V7QYb24CM
関係なかった
自分が昔出なかったのは
AppendTextしてなかったからだったw

すまんかった
380デフォルトの名無しさん (ワッチョイ 7b05-K1Ve)
垢版 |
2019/08/19(月) 20:31:39.57ID:VzpEDBAc0
Invoke調べてみました。いけそうな気がしますが書き方が難しいです
上記のコードの場合どのように記述すれば良いのでしょうか?
2019/08/19(月) 20:43:11.70ID:y72D5AUNp
>>380
ここおススメやぞ

https://blogs.msdn.microsoft.com/nakama/2009/03/30/part-1-windows/
382デフォルトの名無しさん (アウアウカー Sa15-cJb6)
垢版 |
2019/08/19(月) 20:46:44.95ID:cJsYlnhia
パッと見で適当だけど、formにコントロールの変更記述して、コールバック登録してtaskはしらせればいいの違うのか?invokeは当然
2019/08/19(月) 21:00:04.04ID:Vps+pUHe0
>>380
delegate用のメソッド作ってdelegateにセットしてinvoke
https://www.atmarkit.co.jp/ait/articles/0506/17/news111.html
384デフォルトの名無しさん (ワッチョイ d968-2U8j)
垢版 |
2019/08/19(月) 22:54:50.46ID:aQCsW5pK0
doubleって整数のほうに偏りがあったら
小数部分は短い精度になるんですが、これ何とかなりませんか?
doubleは精度高いから小数点第5位とか精度余裕だろwwwwwwwwwww

989〜〜〜132.1235212596  算出結果
989〜〜〜132.1235312314 正解

え???????????
ちょwwwwww

助けてください
385デフォルトの名無しさん (アウアウウー Sa5d-woyF)
垢版 |
2019/08/19(月) 23:06:59.10ID:eDOlyF+5a
>>384
何を言ってるか人に分かるように書かないと誰も答えようがないよw

一般論として、演算誤差を累積させずに
演算可能かどうかはどういう演算をしてるかによるので、
具体的な処理が分からないと何とも言えん
2019/08/19(月) 23:27:14.16ID:9Ob07fGvd
decimal型使えば
2019/08/19(月) 23:36:21.05ID:0KlGy2IO0
>>384
浮動小数点とはそういうもの
小数点以下何桁かではなく全体で何桁か
2019/08/19(月) 23:57:36.54ID:0eZQgVij0
分数型クラスを自分で作ってとっとけ
2019/08/19(月) 23:59:07.58ID:HKOIeNMl0
Seleniumを極めよう
2019/08/20(火) 00:07:25.79ID:VMXKYR4od
Form1, Form2, CounterForm があります。

CounterForm にカウントを表示して、0 になったら、Form1 か Form2 のメソッドを実行するにはどうしたら良いでしょうか?

やりたいこと
5. 4. 3. 2. 1. 0 と表示 → form1.DoSomething();

CounterForm と Form1 の部分はできているのですが、
複数class間で通知する方法がよくわかりません。
2019/08/20(火) 00:22:58.41ID:sL7gwS880
>>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間で通知する方法がよくわかりません。
の意味が分からないんでもう少し詳しく
2019/08/20(火) 01:06:30.58ID:yjnOK/Bv0
「通知」…もし表示済みのフォームをあとからいじりたい場合、

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; } //変数を経由して外側でスローする
393デフォルトの名無しさん (アウアウウー Sa5d-woyF)
垢版 |
2019/08/20(火) 01:15:05.72ID:zheL5RcIa
>>390
Formだろうが何だろうが、操作したい側が操作対象の参照を握れば良いだけだけど、
親子関係が成立しているとか特殊な前提がなければ、Formが別のFormの参照を
握るのはあんまり良くない。

原則論を言えばそもそもFormにUIと無関係の処理を書く時点で間違っている。
2019/08/20(火) 07:52:56.91ID:yjnOK/Bv0
UIと関係あるからフォームなんだろうけど…

非同期処理中にポップアップが出て、その間もメインは触れるが、終わるとメインが変更される
なんてことはよくある

書式設定的なのも別フォームから別フォームをいじるわけだし

前のいじり方を残すために、閉じても隠すだけで、同じインスタンスを再表示したい場合とか
2019/08/20(火) 09:26:58.30ID:+NAZ1HN+M
フォームと無関係な〜って書いてあるぞ

そんなことより全角半角がきもい
2019/08/20(火) 12:03:48.15ID:NghMzgaN0
対象のフレームワーク:Framework 4.0 でコンパイルした自作 DLL があります。
この DLL を 対象のフレームワーク:Framework 4.8 なプロジェクトから参照して使用したとき、
DLL の中はどっちで動くのでしょうか?

たとえば自作DLL内で、DataGridView から継承した DataGridViewEx を作ってあったとして
これを 4.8 なプロジェクトで利用したとき、DataGridViewEx 内で
4.0 の DataGridView が使われるのか、4.8 の DataGridView が使われるのか、って意味です。
2019/08/20(火) 12:10:21.33ID:mC8iPjWhd
自作DLL内でDataGridViewの参照を特定バージョンにしておけば4.0になるしそうじゃなければ4.8
2019/08/20(火) 12:17:12.47ID:NghMzgaN0
自作DLL 側の System.Windows.Forms を見たら
特定バージョン:false
になっていたので、呼ばれる側のバージョンの System.Windows.Forms.dll が使われるってことですね。

Framework 4.8 用に新たに作らないといけないかと思ったのですが、その心配ないみたいで安心しました。
2019/08/21(水) 00:27:12.96ID:7whQ/iRu0
あ、間違えた
× this.Invoke( (MethodInvoker)delegate {
〇 static1.form1.Invoke( (MethodInvoker)delegate {
(thisは自フォーム内のマルチスレッド部分のソースだった)

カウントダウンにマルチスレッドが必要とは限らんが
むしろモーダルだったり
でも「オブジェクトがあれば必ず「通知」できる」という方法は確立しといた方が、オブジェクト指向っぽい
クラスオブジェクト指向の前にメッセージオブジェクト指向があったので(Win32API)
メッセージ、つまり「通知」
2019/08/21(水) 00:57:19.98ID:CGK7jfA0d
>>392
解答どうもありがとうございます。
event かデリゲートで解決できそうです。

// Form1
private void CountDownBtn_Click(object sender, EventArgs e) {
var countdownForm = new MYCountDownForm();

// 4 3 2 1 0と表示してから、下に行きたいが、
// これだとカウント 0 を待たずにすぐ下に行く。
countdownForm.Show();

// このクラスのいろいろな処理

}
2019/08/21(水) 01:36:11.80ID:7whQ/iRu0
>>400
そっちかw
そっちは「モーダルフォーム」でググると出てくると思う
その方が普通に基本
2019/08/22(木) 16:28:36.46ID:tih7LC2d0
APIが公開されていなくてもスクレイピングして非公開websoketに接続したいのですが、
解析からトークンなど必要なheader情報取得すればできるものですか?
403デフォルトの名無しさん (ワッチョイ da47-9WLl)
垢版 |
2019/08/22(木) 16:50:43.33ID:xQsiKIbM0
出来るけど利用規約読め
API経由だとセーフで
API経由しないと逮捕とか書いてあるから
404デフォルトの名無しさん (ワッチョイ 7aad-HwVO)
垢版 |
2019/08/22(木) 16:57:22.84ID:erkZnaOI0
>>402
https://elaws.e-gov.go.jp/search/elawsSearch/elaws_search/lsg0500/detail?lawId=411AC0000000128
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況