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

■ このスレッドは過去ログ倉庫に格納されています
2020/05/27(水) 20:28:41.27ID:Pggemlyq0
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)

「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください
>>980を踏んだ人は新スレを建てて下さい。>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

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

■情報源
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/
・Insider.NET > .NET TIPS - @IT
https://www.atmarkit.co.jp/ait/subtop/features/dotnet/dotnettips_index.html
・DOBON.NET .NET Tips
https://dobon.net/vb/dotnet/index.html
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2020/06/24(水) 19:42:09.00ID:H9m4GMw80
DDL文
2020/06/24(水) 20:43:40.85ID:rxIn+gin0
>>192
さんくすです
> IF NOT EXISTSとかのオプションは無いから
なんと、あったら便利なのにね
IF-ELSEでがんばってみます

>>193
SQL文なので若干すれ違いかなっと
似たようなことがLINQtoSQLでできればとおもったのですが
196デフォルトの名無しさん (ワッチョイ 4f90-l8dZ)
垢版 |
2020/06/24(水) 22:59:21.23ID:G18p0mGY0
Entity Frameworkでデータベースと連携したい場合

public class Book{
. public int Id { get;set;}
. public string Title { get; set;}
}

モデルは↑みたいな感じになるけど
実際には↓みたいな感じに色んなデータとふるまいを持ちたいとする
public class Book{
. public int Id { get;set;}
. public string Title { get; set;}
. public List<Picrture> Picture { get;set;}
.
. (以下振る舞い等)
}

この場合って下のデータモデルからから上のDTOに変換してデータベースに入れる(取り出す時は逆)って考え方でいいのかな?
多くのサイトがEntity Frameworkでのデータベースへの突っ込み方しか書いてなくて
実際に運用する場合のデータの持ち方の考え方がよう分からん
この辺りまで詳しい本とかサイトとかあったら教えてください
197デフォルトの名無しさん (ワッチョイ 8f01-H7K1)
垢版 |
2020/06/24(水) 23:58:21.16ID:KiDLqidP0
いいんじゃない?DTOは名前の通りデータをDAOと受け渡すためだけに使って、振る舞い持たせるのは違う気がする。
2020/06/25(木) 00:07:24.74ID:pPMcnwWPa
単純なアプリだとDomainModelも単純だからEntity、DomainModel、ViewModelを同じインスタンスで済ませられる場合が多い
真面目にやるならそれぞれ別のクラスにしてマッピングするんだけどめんどくさいんだよな
2020/06/25(木) 00:24:04.27ID:GAspYPHa0
めんどくさいけど、アプリ自体を拡張する可能性があると分けといたほうが後々良いことがあったりなかったり
2020/06/25(木) 01:37:48.23ID:Q34w5rfS0
>>199
やめた方が無難
拡張したい階層が2-3ズレるのはよくあること
たったそれだけなのに拡張のために付けた処理が邪魔になって
本当にやりたい改修が大きな工数になってしまうことはよくあること
2020/06/25(木) 08:19:30.72ID:+9vWEdNfr
>>200
「ズレる」ようなのは設計と言えないし、そんな設計したことないけどなあ
2020/06/25(木) 08:48:00.18ID:Q34w5rfS0
>>201
あるやろ?
色んなリストの表示方法(文字着色、並び替え、フォントサイズ個別指定、背景色着色)を実装できるようにしたけど
客の欲しいのはページングのある印刷機能だけだったみたいな
改修にときノリで入れたフォントサイズの変更や文字や背景色がページング印刷時にうまく出ない
→ああ、無いほうが簡単だったな

っとか
203196 (ワッチョイ 4f90-l8dZ)
垢版 |
2020/06/25(木) 20:33:53.95ID:42cionTC0
ありがとうございます
勉強になりました
2020/06/26(金) 07:51:51.47ID:a7mre53d0
c#でアクティブウィンドウがosよりも先にキーボード入力を受けとる方法はありますか?

やりたいことはリモートデスクトップを全画面で繋げている場合、Alt+Tabキーの入力は呼び出し元のosではなく、リモートデスクトップ側が取得しているように見えます。
この挙動を自作のguiでもできればと考えています。

「アクティブウィンドウがosよりも先にキーボード入力を受けとる」の認識が間違っているかも知れませんが、リモートデスクトップのような挙動を実現する方法を教えてください。
2020/06/26(金) 08:39:13.70ID:EHOqkK/F0
グローバルフックしか無いと思うな
SetWindowsHookEx を調べてみなされ
2020/06/26(金) 09:07:56.65ID:wYfFflLL0
>>204
余計なお世話かもしれないけど、アプリの枠の外にあるOS側での共通の操作を、1アプリの都合で勝手にフックされて違う動作になるのは使う方からするとストレスになるから気を付けた方がいいかも。
リモートデスクトップはある意味OS内OSだし、そういう例外的なケースならばアリだと思うけど。
2020/06/26(金) 09:43:44.08ID:an36r83ud
>205
ありがとうございます。調べてみます。

>206
今回は自分で使いたいものなんで。
将来的に業務で使う機会があれば考慮するようにします。ありがとうございます。
208デフォルトの名無しさん (ワイーワ2 FFbf-/Fs/)
垢版 |
2020/06/26(金) 13:15:51.31ID:PjbtVFt+F
キーロガー禁止
2020/06/26(金) 20:47:00.03ID:EHOqkK/F0
Tik Tokの完全再現をw
2020/07/01(水) 15:49:13.62ID:BmoMMcjv0
20年ぐらい前からプログラミングやりたいと思い続けてきた文系おじさんだけど
数年前から少しずつ勉強し始めて、
やっとのことでちょっとしたものをC#で作れるようになってきた
おもしろいわぁ
211デフォルトの名無しさん (ワッチョイ 06c7-QTdV)
垢版 |
2020/07/02(木) 08:48:04.62ID:+yIU1z+T0
https://freesoft-100.com/review/lightbulb.html
色温度をいじれる言語ってなんでしょうか?
pythonを主に使用しているのですが、C#系でないと色温度はいじれませんか?
色温度にもモニタ側、gpu側があると思います。
2020/07/02(木) 09:03:57.94ID:unw3xiWi0
>>211
詳しくないから間違ってるかもしれないが、そのアプリ単体ではなく他のアプリも含めて画面の色温度を変えるという機能なら、OSがそういうAPIを提供しているということかな。それならそのAPIを利用できる言語ならばC#に限らずなんでもいいと思うけど。
2020/07/02(木) 09:04:49.65ID:iSJIUTiv0
>>211
スレ違いだからpythonのスレで聞くかそれのソース自分で理解してほしんだが
C#でできるのはWINAPIをラップした.NETの機能を使うか直にDLLのAPIを呼び出すかくらいなんだから
pythonでAPI使えるのなら同じことができるはず
214デフォルトの名無しさん (ワッチョイ 06c7-QTdV)
垢版 |
2020/07/02(木) 09:51:08.11ID:+yIU1z+T0
ありがとう
c#にはそういうクラスがあるみたい
winのソフト作るにはc#が一番都合がいいよね
215デフォルトの名無しさん (ワッチョイ 1e63-VQSO)
垢版 |
2020/07/02(木) 11:09:32.81ID:esHBKAii0
質問です
DateTime.Now.ToString(@"yyyy\MM\dd") => 2020\07\02 を期待したいのですが 2020M7d2 になります
今は \\ を別な文字に置換し変換後また置換ってやってますがよい方法あれば教えてください
2020/07/02(木) 11:15:16.64ID:j3S5Aqle0
>>215
@"yyyy\\MM\\dd"
2020/07/02(木) 11:26:03.68ID:SFSsBsHn0
そこに\マーク入れる文化ってどういうものなの
2020/07/02(木) 11:31:04.56ID:xozoa+r10
日付にバックスラッシュ…?
219215 (ワッチョイ 1e63-VQSO)
垢版 |
2020/07/02(木) 11:41:12.70ID:esHBKAii0
>>216
なるほど、できました
しかし元の文字列は \ 一文字で決まっているのでどのみち何か手を加えないとならないですね

>>217-218
フォルダ名の生成で日付を含めた任意の書式を扱えるようにするためなのです
2020/07/02(木) 12:25:41.08ID:frMfUtj7r
あー「ファイルパスを作成するとき、年月日ごとのフォルダ階層をつくるため」ってことね
年の中に月だけの名前のフォルダとかセンス的に俺はようやらんけど、理由は理解できたわ
2020/07/02(木) 12:43:20.68ID:ZEZ39nL50
>>215
年月日をそれぞれ別に取得したほうがいいんじゃね

必要ならそれをPath.Combineで連結すれ
222デフォルトの名無しさん (エムゾネ FFaa-JCxG)
垢版 |
2020/07/02(木) 17:00:29.84ID:ryu4JvV+F
/でも造れるやろ
223デフォルトの名無しさん (ブーイモ MM69-SFhf)
垢版 |
2020/08/01(土) 16:52:28.79ID:aC56TYwwM
VisualStudioは糞です。
{}を使うとき

public voidnicemethod
{

}
となるのではなく

public void nicemethod{
}
と自動でなるようにするにはどうしたらいいですか?
2020/08/01(土) 16:54:09.31ID:G+VYcIGl0
2020/08/01(土) 16:58:48.08ID:GNM8CN2Y0
>>223
オプションから起動時の設定変更出来るよ
昔は後者のほうが行数少なくて済むから良いと思っていたけど、最近は前者でも別に良いわと
2020/08/01(土) 17:01:00.07ID:8QGIO3XO0
縦長ディスプレイなら良いんじゃね
2020/08/01(土) 17:57:59.23ID:E5+XpSzKd
整形はvsのデフォルトに任せるようにした
独自整形ルール作ってるプロジェクトに入るとめんどくせって思うようになってしまった
2020/08/01(土) 18:15:37.32ID:8AkvqbAqa
同じ構文木なら表示形式はなんでもいいはずだ
保存時の形式だけ標準化して、編集時はユーザーの好みに合わせてフォーマットするようにIDEが進化すべき
2020/08/01(土) 18:23:48.50ID:dl6F83GvM
簡単な住所録作ろうとしてます。
登録と削除と追加ができればいいだけのやつ。データ保存はデータベース側に。
これのシンプルなオープンソースプロジェクト知っている方いませんか?いたら嬉しい。
2020/08/01(土) 18:48:40.23ID:Yannm6rz0
>>229
オープンソースプロジェクトの何を探してんの?
データベース?
2020/08/01(土) 19:19:48.95ID:1LAdFvqL0
>>230
住所録って書いてんじゃんメクラかよ
2020/08/01(土) 19:31:35.20ID:Yannm6rz0
>>231
作るのにオープンソースプロジェクトが必要なの?
って言ってるんだけど。
作るんじゃなくて流用する、の間違いなら、ああ、って思うけどさ。
2020/08/01(土) 19:43:37.72ID:EiwM5rD/0
まあ、そのまんま使えねーだろーから改修して使おうってんじゃねーの?
オープンソースの正しい使い方やん
2020/08/01(土) 20:12:27.90ID:Yannm6rz0
簡単な登録と削除ができるだけでいい住所録にそんなものが必要だとは思わんというか、
何かをカスタマイズしてその程度の住所録にするのは、ちょっとたいそうな気がする。
235デフォルトの名無しさん (ワッチョイ 7a6a-xE3T)
垢版 |
2020/08/01(土) 20:49:12.61ID:oCALSNxU0
エスパーすると作りたいけど右も左も分からんからお手本が欲しいってことかな
2020/08/01(土) 20:51:54.45ID:xhSYh2050
>>229
https://www.google.com/search?q=c%23 Address book
2020/08/01(土) 21:48:16.20ID:NKcPOHZ30
オープンソースってちょいっと触るには佇まいがでかすぎて流用には向かないことが多い
住所録のどこの部分の機能が必要か知らんけど
単にアドレス帳の登録、削除、編集の基本機能だけだったら1〜2日の内容だから
どっか入門サイトで似たようなの見つけて実装したほうが早いと思う
238デフォルトの名無しさん (ワッチョイ 4a32-RDrw)
垢版 |
2020/08/01(土) 21:52:38.29ID:+9Q20FKV0
スレ違いだったら申し訳ないです。
C言語をやろうととりあえずmacかったのですが、
どのソフトで開発環境作ったらいいでしょうか?
2020/08/01(土) 21:54:22.30ID:G+VYcIGl0
>>238
ここCじゃなくてC#な
2020/08/01(土) 22:04:49.38ID:8QGIO3XO0
>>238
もう一つ言っておくと、mac はobjective c
(c++)でないと
画面作れないよ
2020/08/01(土) 22:06:32.74ID:LLVAByzud
macは自由陣営じゃないから。。。
242デフォルトの名無しさん (ワッチョイ 4a32-RDrw)
垢版 |
2020/08/01(土) 22:11:32.98ID:+9Q20FKV0
わかりました
ありがとうございます
2020/08/02(日) 06:10:11.27ID:T2MIboAU0
c#で作ったbotからandoroidスマホに通知を送る良い方法はありませんか?
履歴を確認できる方法で。
今まではline-notifyでlineに送っていたのですが、新しいルート証明書をインストールしなくてはならなくなって別の方法を探しています。
2020/08/02(日) 07:27:09.21ID:EizALxAu0
>>243
相手が端末の電源オフのときはどうしたいの?
サーバーの特定のデータを見に行く作りにしないと結局使えないじゃんってなることのが多かったよ
245デフォルトの名無しさん (ワッチョイ 56bb-JV/9)
垢版 |
2020/08/02(日) 12:52:22.51ID:scrCUlqp0
データクラスって一時期C#にも付くんじゃないかって言われてたのに、一体どうなったの?
https://try.kotlinlang.org/#/Kotlin%20Koans/Introduction/Data%20classes/Task.kt
オートプロパティのおかげでJavaみたくはならないから要らないってこと?
2020/08/02(日) 13:54:59.45ID:xaz7GC4v0
9でrecordくるよ
2020/08/02(日) 14:51:37.50ID:umITGI3r0
https://ufcpp.net/blog/2020/6/record0609/
https://ufcpp.net/blog/2020/6/cs9vs16_7p3/
recordsはこんな感じ
248デフォルトの名無しさん (アウウィフ FF09-QWST)
垢版 |
2020/08/02(日) 16:20:00.33ID:NsDY9jGSF
ここはプログラムを描きたい人造りたい人向けのスレ
フリーソフトダウンロードして使いたい人は相応のスレへ逝くことをお薦めします
2020/09/03(木) 22:01:35.41ID:RMVHFRAl0
public interface Ixxxxx
{
 int method1(int x);
}

インターフェイスについて質問です。
上ではメソッドの型を定義しているわけですが、
インターフェースの引数定義で、xのように変数を設定するのはどうしてなんでしょうか。
ここでは使われない変数なので、型のみで良いと思うのですが。

それから、publicを省略して、interfaceとだけ定義する理由はどうしてなのでしょうか。
classなら、publicを前置するのに。
2020/09/03(木) 22:10:50.18ID:RMVHFRAl0
ルート相対的URLを保存するクラスは何が適しているんでしょうか。

String型に、/root/abc/def を文字列として保存しているのですが、
適切な型があれば教えてください。
2020/09/03(木) 23:38:56.88ID:FEiIVBqsM
>>249
名前がないと何を意味する引数なのかが意味不明だから
interfaceはpublicメンバしか持てないから
2020/09/04(金) 00:15:18.15ID:yQcUkcYq0
引数名ないとドキュメント化する時にも困るしね
2020/09/04(金) 11:28:01.48ID:M8Oq5rfA0
>>249
引数や戻り値の型をしっかり定義しないといけない理由は、ILやアセンブリといった低レベル知識を学習すればよく分かるよ
機械語レベルだとint、long、float、double〜etcはそれぞれ命令文が違う
だから引数や戻り値がバラバラな値型だとそれぞれの機械語を生成しなきゃならず共用化出来ない

逆に言うと参照型であればポインタだけで済むので実は共用化が出来る
なので参照型であればobjectとして定義をすれば実際に共用化可能(値型もboxingしてobject型にすれば同様)
2020/09/04(金) 11:39:06.89ID:krKESdlN0
型のみで十分なのになん変数名まで書かなきゃならんの?って質問にその回答は適切ですか?
2020/09/04(金) 12:06:19.79ID:yQcUkcYq0
>>253
その回答はズレてる
2020/09/04(金) 12:46:23.59ID:YyY7xdI50
>>251
>>252
レスありがとうございます。
なるほど、
変数名に引数の役割について記録しておくということにとても納得しました。
ソースの自己ドキュメント化につながりますものね。

>>253-255
レスありがとうございます。(^-^)
2020/09/04(金) 13:31:45.96ID:Cdgw0eXGM
インターフェイスメンバに引数名が必要なのは名前付き引数のためでもある
名前付き引数ってのはmethod1(x:123)みたいな書き方のこと
正確には名前付き引数がC#に導入されたのは比較的最近なので時系列が逆なんだけど、
.NETはC#に限らずいろんな言語を動かすことを想定して設計されてるので名前付き引数のための要請についても元々考慮されてたというわけ
2020/09/04(金) 14:23:19.04ID:Utz5OTUqa
>>257
下のコードは合法なのでさすがにそれは意味不明
interface IHoge
{
  void Fuga(int x);
}

class Hoge : IHoge
{
  public void Fuga(int y)
  {
  }
}
2020/09/04(金) 14:29:57.19ID:G2vvVEFn0
引数名を変更するのってどういったケースを想定してるん?
2020/09/04(金) 14:34:15.41ID:Utz5OTUqa
別に想定なんかしてないのでは?
単に違法にする理由がないだけかと
2020/09/04(金) 17:36:23.03ID:nh9T8LFU0
>>258
IHoge hoge = new Hoge();
hoge.Fuga(x: 100); //<= OK
hoge.Fuga(y: 100); //<= NG: compile error
2020/09/04(金) 18:29:28.50ID:Utz5OTUqa
>>261
当たり前やんw
2020/09/04(金) 19:19:04.36ID:Utz5OTUqa
あーインターフェイスのメソッドの仮引数が名無し定義を許す仕様になってたら
名前付きで呼び出せないよって言いたいわけか
確かにその通りだね。

だけど「名無し定義を許さない理由の一つは名前付き引数を想定していたから」は考えすぎじゃないのかな
2020/09/04(金) 19:51:37.09ID:Cdgw0eXGM
いや名前付き引数はVB.NETには昔からあったぞ
想定していないわけがない
2020/09/04(金) 20:31:43.96ID:nqNO8CQ40
そもそもコンパイルしても変数名はILに残るわけだし
C#1からたぶんそうだよね?reflectionあるんだし
2020/09/05(土) 10:58:29.89ID:JiWof8twa
>>265
それはもちろんその通りで、名前付き引数も当然そのメタ情報を見るわけだけど、
MSが仮に明確な意思をもってインターフェイスメンバに引数名は絶対要らないという設計判断をしたならCLIもインターフェイスメンバには例外的に引数名を持てない仕様にしただろう
CLIの設計としてはわざわざそんな例外を設けるのは不自然だし、C#の言語仕様を考えてもインターフェイスメンバだけ例外的にメソッド宣言の文法が違うのは不自然だ
もちろん、実装には追加コストを払って特別なケアが必要になるだろう
そこまでして引数名を省略したいだろうか?ということだね
2020/09/05(土) 12:34:52.95ID:Waja5Z+Na
実行時に小さくないコストが発生するような方法なんて取るわけないと思うよw
メタ情報なんて見てるわけないじゃんwww
2020/09/05(土) 13:22:53.11ID:azagYl6mp
家政婦はメタ
2020/09/05(土) 13:51:42.86ID:6OTXYwA0M
>>267
誰が実行時に見てるなんて言ったんだ?
見てるのはコンパイル時
2020/09/05(土) 14:12:24.58ID:RVsSclOOM
2日連続して秒で論破されとるやつw
2020/09/05(土) 16:47:07.35ID:aivXeFh8d
>>270
スレタイの通り初心者なんやろ
2020/09/05(土) 18:29:01.06ID:Waja5Z+Na
>>266は誤読したけど前日に論破(笑)なんかされた覚えはないよw

言い訳をさせてもらえばそもそも>>265-266は話の意図が不明瞭。
どっからそんな話が出てくるのって話
2020/09/05(土) 22:38:11.37ID:VnlHSptc0
インターフェースの引数名を省略する戦略なんかないって結論出てるのにね
2020/09/06(日) 08:18:43.19ID:gGwX7R3F0
>>273
そこの理由が示されていないんでは?
名前付き引数を使えるようにしたんで仮引数は省略できません、じゃ理由になってないでしょ?
275デフォルトの名無しさん (アウウィフ FF8b-th+2)
垢版 |
2020/09/06(日) 14:33:55.32ID:pKWvrGW4F
省略するとき
hoge(hage,,,,,fuga,,,,kuzu,,,) みたいな言語あったなー
276デフォルトの名無しさん (ワッチョイ 0701-3NJ+)
垢版 |
2020/09/07(月) 02:57:30.38ID:u0REhpNo0
using var task = Task.Run(() => Do(a, b, c));

このDoを途中で止めることできる?
Doの処理に時間がかかるためキャンセルさせたい場合がある
2020/09/07(月) 03:10:56.80ID:3uGG3SyO0
CancellationTokenを使う
https://docs.microsoft.com/en-us/dotnet/standard/parallel-programming/how-to-cancel-a-task-and-its-children
2020/09/07(月) 03:25:16.17ID:jjIciKyq0
Doがキャンセルできるように作られてればできる
そうでなければ無理
2020/09/07(月) 09:29:51.53ID:s6/MEWpq0
a,b,cってなによ?
2020/09/07(月) 10:42:48.10ID:Mci5uexUM
引数じゃないの?
281デフォルトの名無しさん (ワッチョイ 0701-3NJ+)
垢版 |
2020/09/07(月) 16:30:38.13ID:u0REhpNo0
Doの改造も不可避みたいですね
ありがとうございました
2020/09/11(金) 09:13:51.86ID:rDZLwTxXa
VisualC#2019パーフェクトマスター

買ってみた
800ページ近くある
勉強しなおし

Java有償化で、いろいろ特需だな

Javaよサラバ

Javaよサラバ

Why なぜに生きているのか

わからない
283デフォルトの名無しさん (ブーイモ MM81-az8F)
垢版 |
2020/09/11(金) 10:05:52.91ID:qxFjIo0zM
Java有償本当か?
2020/09/11(金) 16:12:44.77ID:rDZLwTxXa
優勝だ
285デフォルトの名無しさん (エムゾネ FF32-0ian)
垢版 |
2020/09/23(水) 09:34:34.80ID:hJkRvCZvF
>>1
Part 149
2020/09/23(水) 19:49:30.91ID:SeN5l4G8a
需要ないと思うけど暇だったので別スレで質問が出てたキー操作のシーケンスで発動する
キーボドショートカットを作ってみた
https://ideone.com/FcOn5C

使い方:
public partial class Form1 : Form
{
  private KeyboardShortcutsDetector mKbsDetector = new KeyboardShortcutsDetector();
  public Form1()
  {
    InitializeComponent();
    mKbsDetector.AddKeyBinding(Keys.Control | Keys.K, Keys.Control | Keys.L, () => Console.WriteLine("Ctrl + K, L"));
    mKbsDetector.AddKeyBinding(Keys.Control | Keys.K, Keys.Control | Keys.M, () => Console.WriteLine("Ctrl + K, M"));
    mKbsDetector.AddKeyBinding(Keys.Control | Keys.J, Keys.Control | Keys.U, () => Console.WriteLine("Ctrl + J, U"));
  }

  protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
  {
    return mKbsDetector.ProcessKey(keyData) ? true : base.ProcessCmdKey(ref msg, keyData);
  }
}
退屈なコードだからたぶん見るだけ時間の無駄だと思うw
2020/09/24(木) 00:24:56.04ID:GbsAQP4b0
MVCとかまだイマイチわからんからwinformで作ってからMVCに移行する感じで勉強してるけど一人開発だと有り難み感じないからちょっと空しい
288デフォルトの名無しさん (ラクッペペ MMde-T5KC)
垢版 |
2020/09/24(木) 12:42:20.92ID:gbWGo5W3M
ボタン押したあとに結果リストにフォーカス移動させるのは
viewでやってええのか?
2020/09/24(木) 16:36:22.54ID:e+Ck+96a0
いいと思うよ
2020/09/26(土) 17:13:06.01ID:xSRIB2Tf0
windowsフォームアプリでHttpClientを使ってhtmlを取得しようと思っていますがうまくいきません。ステップ実行すると※の部分で処理が終わってしまいます。エラーに関する表示が何もでないため行き詰まってます。非同期処理に関する理解が浅いからだと思っていますが、壁を乗り越えられません。
このようなコードではなぜうまくいかないのでしょうか?

@
private void button1_Click(object sender, EventArgs e)
{
 var url = "http://www.google.com";;
 var t = GetHtml(url);
 t.Wait();
 this.textBox1.Text = t.Result;
}
async Task<string> GetHtml(string url)
{
 var client = new HttpClient();
 var html = await client.GetStringAsync(url);//←※
 return html;
}

(続く)
291デフォルトの名無しさん (ワッチョイ 1201-nSIs)
垢版 |
2020/09/26(土) 17:13:28.26ID:xSRIB2Tf0
>>290の続き


ためしにコンソールアプリで似たコードを書いてみましたがうまくいきます。
A
static void Main(string[] args)
{
 var url = "http://www.google.com";;
 var t = GetHtml(url);
 t.Wait();
 Console.WriteLine(t.Result);
}
static async Task<string> GetHtml(string url)
{
 var client = new HttpClient();
 var html = await client.GetStringAsync(url);
 return html;
}

フォームアプリでもハンドラに全て突っ込めばうまくいきます。
B
private async void button1_Click(object sender, EventArgs e)
{
 var url = "http://www.google.com";;
 var client = new HttpClient();
 var html = await client.GetStringAsync(url);
 this.textBox1.Text = html;
}
2020/09/26(土) 17:23:29.59ID:RSACZQL60
>>290
private async void button1_Click( object sender, EventArgs e )
{
var url = "http://www.google.com";;
this.textBox1.Text = await GetHtml( url );
}
2020/09/26(土) 17:27:53.86ID:9d7CJAWD0
asyncはwaitしちゃだめ
理由は async デッドロック あたりでググって
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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