C#, C♯, C#相談室 Part97

■ このスレッドは過去ログ倉庫に格納されています
2022/12/21(水) 10:18:38.02ID:DxBIri9+0
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512

■Visual Studio 2017 Community(無償の統合開発環境)等はこちら
http://www.visualstudio.com/downloads/

■コードを貼る場合はこちら
http://ideone.com/

■前スレ
C#, C♯, C#相談室 Part94
https://mevius.5ch.net/test/read.cgi/tech/1553075856/

■次スレは>>970が建てる事。
建てられない場合は他を指定する事。

C#, C♯, C#相談室 Part96
https://mevius.5ch.net/test/read.cgi/tech/1639965805/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2023/01/21(土) 18:17:20.63ID:rZUyyxKK0
スタティックおじさんきたな
2023/01/21(土) 22:54:03.42ID:XQUa+q2yM
>>135
そうですね
INotifyPropertyChangedとかINotifyDataErrorInfoを実装しておきたい感じです
2023/01/22(日) 10:06:15.27ID:rqWd8pMR0
探せば大抵のものはあるのに、自分で作る意味とは?
アートとか、そういう方面しか残ってないような感じがするのですが(´・ω・`)
2023/01/22(日) 11:19:49.43ID:cs1e2wyOa
帳面で効率が悪けりゃソフト使えばいいし効率の良いソフトがみつからなけりゃ作るより他にないだろ
2023/01/22(日) 11:27:13.17ID:cs1e2wyOa
>>141
ただのViewModelじゃねーか
フレームワーク使え
145デフォルトの名無しさん (ワッチョイ 5301-bbWX)
垢版 |
2023/01/22(日) 12:53:40.50ID:8KSe/b5e0
最近MVVMのほうが楽じゃね?って思ってきた
楽しいし
146デフォルトの名無しさん (ワッチョイ 5301-bbWX)
垢版 |
2023/01/22(日) 12:54:24.84ID:8KSe/b5e0
これもすべてソースジェネレーターのおかげかもしれん
さすがC#
2023/01/22(日) 17:03:04.26ID:jvNfJ0Pqd
>>139
うちがWindowsの業務クライアントアプリ系を委託してるソフトハウスがまさにこんな感じだわ
イベントハンドラからSQL投げてる
ただしstaticユーティリティクラスではなく共通の神フォームクラスがあって、全てのフォームがそれを継承する形
まあレベル低すぎて開発もクソ遅いから、負債自体はそれほど量が多くないのは救いかな
2023/01/22(日) 18:32:18.54ID:xRK/d49A0
>共通の神フォームクラスがあって、全てのフォームがそれを継承する形
こういうのよくないな
神クラスのメンテナが異動だかで居なくなだけで誰も保守できない砂上の楼閣アンチパターンに嵌るね
2023/01/22(日) 21:31:04.53ID:ADzURpxfM
>>139
実質Cプログラムだな
2023/01/23(月) 02:49:47.88ID:0XgI/UQT0
>>149
前に作ったC#のプログラムがまさにそんな感じで、
その後MVVMしてみた。
そして最近作ったCのプログラムが構造体でオブジェクト指向プログラミングしてる。
2023/01/23(月) 08:17:46.60ID:3Vu8SA8M0
>>148
その言い方だと基底クラスと派生クラスに分かれているもの全部が当てはまるように聞こえてしまうが
2023/01/23(月) 08:19:09.55ID:YKh4Yexo0
>>151
神クラスを知らんのか
2023/01/23(月) 08:29:28.69ID:3Vu8SA8M0
規模じゃなくてメンテナの有無を問題にしていたからだよ
2023/01/23(月) 08:46:40.58ID:YKh4Yexo0
規模が小さければメンテナが交代しても負担は少ない
2023/01/23(月) 09:08:08.58ID:qV3QzySmp
ライブラリなんて当時のセット使うに決まってるじゃん
2023/01/23(月) 09:26:39.82ID:t2EpFVl6a
顧客のOSがバージョンアップするのにいつまでも使えるわけねーだろ
2023/01/23(月) 09:29:38.64ID:KYv3x0sqM
>>156
使えなくなる理由が分からない

ブラウザの話?
2023/01/23(月) 09:34:41.96ID:t2EpFVl6a
わからないは草
2023/01/23(月) 10:09:44.77ID:2/794eE6p
>>156
そんなんちゃんと契約書にOSのバージョン指定しとかない会社が悪い
OSバージョンアップされたら何起こるか分からないんだから
最悪作り直しだってあるし、そんなん瑕疵理由にされたらたまらないだろ
2023/01/23(月) 10:10:26.60ID:YKh4Yexo0
指定したバージョンで使えなけりゃ作り直すしかねーだろ
2023/01/23(月) 20:40:31.82ID:N1CH+niL0
>>152
神クラス悪くないよな
すべてのグローバル変数がちゃんと集結してるなら
リークはここさえ調べればいいし
2023/01/23(月) 21:22:23.16ID:3Vu8SA8M0
本当にヤバい神クラスというのは担当者が1人じゃなく複数人でメンテしていて、
しかも誰一人として全貌を把握していないという。。。
2023/01/24(火) 07:57:54.50ID:qtsatPEhr
まあ1人で保守できてて数が把握できるレベルならな。。
164デフォルトの名無しさん (ワッチョイ d31d-QR4B)
垢版 |
2023/01/24(火) 10:27:18.73ID:yL08sSgL0
ディスプレイ設定の
マルチディスプレイの
複製表示するだとか拡張表示するだとかの設定を
プログラムで取得できますか?
2023/01/24(火) 16:12:45.07ID:88+gyU910
そりゃ出来るだろ。
取得するAPIが用意されているかどうかは知らんけど。
2023/01/24(火) 16:25:23.27ID:WrVsgKSa0
>>164
WMIでググって見ると良いかも。
2023/01/24(火) 17:43:09.31ID:hrk0Jab5M
>>164
.Netのフレームワーク抜きにして

基本的にwindowsの情報はwin32 apiかwinRtかで取得できる
楽かどうかは不明だけど両方ともC#ではアクセスできる

それ以外にレジストリの情報だけと言う場合もあるけど
2023/01/24(火) 18:08:58.39ID:hrk0Jab5M
思い出というかうろ覚えレベルだけど

昔はwinformsの方でAPIがあって複数画面の情報は取れた
WPFにはAPIが用意されてなかったのでwinformsを参照して情報を取ってた
169デフォルトの名無しさん (ワッチョイ d31d-DmZS)
垢版 |
2023/01/25(水) 10:31:48.06ID:1QUndYzE0
>>166
WMIの存在知っていて、Monitor〇〇は見てみたんですけど、モニタごとの
情報は取得できるけどマルチディスプレイの設定は見当たらないんですよね。

>>167
win32apiも見たんですが、やはりモニタごとの設定は取得できるんですが、
マルチディスプレイの設定みたいなのが見当たらなかったです。
2023/01/25(水) 11:29:49.38ID:YgKVEuEk0
>>169
答えはわからなかったが、これを見る限りレジストリに保存していそう
https://answers.microsoft.com/ja-jp/windows/forum/all/%E3%83%9E%E3%83%AB%E3%83%81%E3%83%A2%E3%83%8B/ab090d66-dade-4723-a019-019c75a9258f
2023/01/25(水) 11:37:43.88ID:HF2K9cvb0
>>169
上の人が書いているけど、レジストリっぽいですね。

DisplaySwitch.exeによる切り替えは結構ヒットするんだけど、情報取得はみつけられなかった。

WindowsAPIだと、

SetDisplayConfig
QueryDisplayConfig

あたりがそれっぽいのかも?
詳しい人の回答を期待w
172デフォルトの名無しさん (ワッチョイ 0301-N1F8)
垢版 |
2023/01/25(水) 12:37:42.36ID:SKrgZEWi0
マルチディスプレイの設定って具体的に何よ
最終的に何の項目の値が欲しいのよ
コンパネや設定アプリのこの項目ですとかそういうの書きなさいよ
2023/01/25(水) 13:43:55.80ID:g3U6xxzNd
マルチディスプレイの項目の
表示画面を拡張するや、表示画面を複製するが何になってるか取得したいって最初に書いたんだけどな…
2023/01/25(水) 14:06:15.04ID:VgR3j9B70
C言語から入った人間なのでexeファイル=機械語と思いこんでたけど違うんですね……
中間言語?CLR?いやC#もexeファイル作成されるじゃんどういうこっちゃと思ってました
えーっとC#のexeファイルは中間言語で出来てるって理解であってます?つまりexeだけど.net入ってないPCじゃ実行できないってことですよね?
175デフォルトの名無しさん (エムゾネ FF1f-N1F8)
垢版 |
2023/01/25(水) 14:08:37.83ID:6qMSPLxFF
ならその画面出してキャプチャして画像解析でもすりゃええやん
176デフォルトの名無しさん (ワッチョイ 638e-RQPf)
垢版 |
2023/01/25(水) 16:47:40.06ID:lfyXBnaV0
>>174
C言語から入ったからじゃない
お前が無知なだけ
2023/01/25(水) 17:31:10.31ID:VgR3j9B70
>>174ですが解決しました。失礼しました。
2023/01/25(水) 19:26:40.13ID:FCKUBvCH0
>>176
建設的でなく情報を提供することもない価値のない書き込みをありがとう
でもそういうのやめにしないか?
2023/01/25(水) 19:28:12.41ID:BZf8jlam0
C言語関係ないので間違ってはないな
2023/01/26(木) 02:21:06.17ID:ZFMbSjAA0
むしろcから入ったほうが、ほかのいわゆる高級言語から入るより詳しくなりそうな気がするんだがな
2023/01/26(木) 05:08:09.80ID:v0vT4MdvM
C言語プログラムではexeファイル作成しても実行環境のランタイム周りでエラー吐くと即実行時エラーで停止するからな
2023/01/26(木) 15:37:19.08ID:O3LYxWam0
プログラミン好きじゃないけど、稼ぐ手段と考えたら上達しないんですかね?
ていうか、うまく出来もしないのに好きでいることなんて出来るでしょうか
成果が出て好きになるのでは?
2023/01/26(木) 15:40:51.40ID:r9XE4FBU0
好きとか 嫌いとか最初に言い出したのは誰なのかしら
2023/01/26(木) 16:46:19.96ID:O3LYxWam0
分からん
好きなことで生きていくみたいな

他人と比べて明らかに下手でも好きでいられるのだろうか
2023/01/26(木) 18:41:23.01ID:SJYXMXJT0
>>182
スレ違いどころか板違い
低能すぎるからハロワ行け
2023/01/26(木) 19:37:48.38ID:GkI+YKE10
スレチ警察ご苦労
187デフォルトの名無しさん (ワッチョイ 0301-N1F8)
垢版 |
2023/01/27(金) 01:10:49.54ID:unSIwQ1w0
駆け抜けてゆく 私のメモリ外♪
188デフォルトの名無しさん (ワッチョイ 6301-jGE9)
垢版 |
2023/01/27(金) 18:21:50.28ID:01PH/qCE0
ここで聞いていいのかわからんけど
WinUI3
Windows App SDK
MAUI
こいつら並行して存在してるみたいだけど関係性ってどうなってんの?
UWPはディスコンになったって理解でいいの?
189デフォルトの名無しさん (ワッチョイ 0301-N1F8)
垢版 |
2023/01/27(金) 21:43:33.88ID:unSIwQ1w0
多分Microsoftも分かってない
2023/01/27(金) 21:49:53.26ID:P0p3cJ8l0
本当はMSも新しいものにシフトしたいけどWin32は捨てられないし
レガシー無視ならWindowsである必要が無くなるからなぁ
なんやかんやでwebの技術でアプリは作れる時代だし
XAMLなんかはそろそろ辞めた方が良い気がするんだよなぁw
2023/01/27(金) 22:49:09.08ID:Ze4DWSK5M
>>188
それ全部層が別なんだ
以下俺の理解

まず下に行くほど上位層になる
様々な状況を無視して強引にフォルダにしてみると
c:\MAUI\Windows App SDK\WinUI3

・WinUI3
windows用の新しいGUIライブラリ
C++で書かれててc++にもXAMLの恩恵が前より受けられるらしいのだが魔術に近いコードを書かされるゴミ
目新しさだけで近づくと絶望感しか感じられない残念なプロダクト



・Windows App SDK
windows上で現在色んな技術 win32 winrt winUI3 などがごちゃごちゃにあって
それを統一的には無理だけどアクセスできるレベルに合体させようと言う残念な仕組みのゴミ
この世にドラゴンボールのフュージョンはないと思い知らされる凄いプロダクト



・MAUI
マルチプラットフォームでiPhone,android,windowsなどいろんなシステムを横断して最大公約数的に使う仕組み
本来は開発工数が下がるはずなのだが個々のシステムをかなり理解していないと何もできないゴミ
各プラットフォームでの学習+MAUIの学習と言う学習時間フルコースプロダクト
ある意味超人オリンピック
2023/01/27(金) 23:00:16.44ID:Ze4DWSK5M
MSのFAQから意訳

UWPで開発で満足してる人は焦ってWindows App SDKに移行する必要はない
2023/01/27(金) 23:02:56.90ID:kMLtWNPM0
>>191
ゴミしかなくね?
2023/01/27(金) 23:08:34.74ID:Ze4DWSK5M
MSは基本的にwindowsアプリ開発のベースをUWPで見てる節がある

それ以外の人にもUWP並みの恩恵をと言うのがWindows App SDK
2023/01/27(金) 23:54:16.49ID:Fhi2vLV20
MSもElectron使ってるし、実際ゴミしかないので
WPF以降はもうWebベースに移ったほうがいいかなって思ってる
2023/01/27(金) 23:55:50.76ID:Fhi2vLV20
Webベースっていうと語弊があるな、ブラウザベースか
197.NET MAUI HighSchool (ワッチョイ 9a01-mpM/)
垢版 |
2023/01/28(土) 07:46:47.27ID:Akv+btg40
>>195
ElectronってVScodeだけじゃね?
OfficeとかWinUI3っぽいしVSもC#じゃんね?
UnityもUI部分の画面はC#みたいだぞ
2023/01/28(土) 08:32:44.81ID:TqWhMxhs0
Teams
199デフォルトの名無しさん (ワッチョイ e301-s91j)
垢版 |
2023/01/28(土) 09:48:55.24ID:p3y/mDFs0
>>191
ありがとう

そりゃいつまで経ってもWinFormsが無くならんわけだわ
なんなら一番成功してるまである
2023/01/28(土) 10:37:15.32ID:ggMIOAKX0
高dpiで画面が崩れるのどうにかしてほしい
2023/01/28(土) 10:42:06.46ID:qgiHv5Wf0
ズームしてるからやろ?
202デフォルトの名無しさん (ワッチョイ e301-s91j)
垢版 |
2023/01/28(土) 10:42:44.43ID:p3y/mDFs0
>>200
VS2022でなんか対策入ってなかったっけ?
203.NET MAUI HighSchool (ワッチョイ 9a01-mpM/)
垢版 |
2023/01/28(土) 11:23:23.91ID:Akv+btg40
>>202
.NET7じゃね?
2023/01/28(土) 16:16:56.07ID:qgiHv5Wf0
XAMLやバインディングは難解すぎる
2023/01/28(土) 16:21:44.03ID:SSo2rJoBd
>>198
Desktop版Teams糞すぎでweb版使うよね
2023/01/28(土) 16:31:49.12ID:qgiHv5Wf0
XAMLとロジックを分離することでデザインだけに特化したプロフェッショナルに任せられるとかいうけどそんなことしてるところあるのかね
2023/01/28(土) 16:33:29.41ID:qgiHv5Wf0
C#を知らずに書けるのか
2023/01/28(土) 16:34:51.45ID:zBTU9IJ/0
XAMLに文句言ってる人もべつになにかもっと良い代替案があるわけでもないんだろ?
jsonかyamlかあるいはまたなにか独自仕様でも作るか。
2023/01/28(土) 18:27:49.87ID:DKSWYQK4a
Windowsデスクトップアプリの次のスタンダードはWebView2に決定してるよ
C#とも何の問題もなく連携できるから、もう何も心配することはない
ただHTML/CSSだけできればよい
210デフォルトの名無しさん (ワッチョイ 0b01-9yTq)
垢版 |
2023/01/28(土) 18:34:56.52ID:x9KLfrKP0
WinFormsだけを強化/ブラッシュアップして行くだけでいいのに
今現在Microsoftが決定してることは全部間違った方向
211.NET MAUI HighSchool (ワッチョイ 9a01-mpM/)
垢版 |
2023/01/28(土) 18:37:51.27ID:Akv+btg40
>>207
正直余裕
212.NET MAUI HighSchool (ワッチョイ 9a01-mpM/)
垢版 |
2023/01/28(土) 18:39:12.56ID:Akv+btg40
HTML,CSS,JavaScriptほど密結合の強い組み合わせないと思うけどな
WinFormもそうか
213デフォルトの名無しさん (アウアウウー Sa47-rfgy)
垢版 |
2023/01/28(土) 18:51:54.18ID:DKSWYQK4a
>>206
現実には無いね
Web開発ではHTML/CSSですら自分で書けるデザイナーは稀であり、デザイナーはお絵描きするだけでHTML/CSSはエンジニアが書くのが普通だ
ましてやC#エンジニアしかまず目にしないXAMLを扱えるデザイナーなんて存在しない
2023/01/28(土) 19:08:33.35ID:acHVjvs20
>>208
JavaFXと言う屍なら
2023/01/28(土) 21:22:31.10ID:0L7E+iYP0
xamlはさくっと簡易なgui作る程度なら便利ではあるがxamlだけだとboolの反転すらできないから結局コード書くことになるんでbindingクソ喰らえってなる
216デフォルトの名無しさん (ワッチョイ e301-s91j)
垢版 |
2023/01/28(土) 21:27:00.01ID:p3y/mDFs0
XAMLでも何でもいいから
ひとつこれと決めてしっかり枯れるまで面倒見てほしい
2023/01/28(土) 22:47:24.30ID:Q8ohQpbl0
XAMLはもう枯れてるのでは?
2023/01/28(土) 23:00:10.63ID:acHVjvs20
x:Bindだとコンバーターは普通のスタティックメソッドでコンパイル時に型チェックしてくれるから大分良くなってるんだけどね
2023/01/29(日) 01:16:07.51ID:R24XfIrD0
>>209
>Windowsデスクトップアプリの次のスタンダードはWebView2に決定してるよ
もう2ひねりぐらいしないとコレ常用は厳しいなあと思う
HTAの再発明の上に実行環境がフォルダ掘ったりで劣化しとるのにスタンダードになるとは到底思えない
外人にも概ね評判悪いみたいだし
2023/01/29(日) 09:49:06.93ID:fP4u16yma
>>208
xamlなんて使わないで、C#でUIを簡単に定義できるようにすればいい
覚えることも減るし、コードとの親和性も良くなる
2023/01/29(日) 10:28:03.21ID:tvJJpmA20
>>206
扱えるデザイナとそもそもツールがないような?
2023/01/29(日) 11:42:03.87ID:57gL/0v0a
>>220
WPFはXAML使わずC#だけで書けるからそれが良けりゃ自分でライブラリ作れよ
2023/01/29(日) 12:02:19.28ID:1KUwXnGJ0
>>220
MauiにMVUってコードでUI記述できるやつあるけど使いやすいか?
https://qiita.com/MAUIHighSchool/items/5f55bbb3557368b0a1f4
2023/01/29(日) 12:12:03.57ID:Bt1+Pj/S0
flutterっぽいな
2023/01/29(日) 13:15:24.15ID:R8JESUlY0
>>223
今flutter取り組んでるけど、
単なるデザイン処理がコード中に占める割合が高くて
めちゃ読みにくて慣れんわ
226デフォルトの名無しさん (ワッチョイ e301-s91j)
垢版 |
2023/01/29(日) 13:27:12.72ID:8bst+jr10
GUI黎明期は間違いなくコードでUI記述してたわけで
先人がこれはあかんと否定してきたものを今更リベンジさせる必要があるんだろうか
227.NET MAUI HighSchool (ワッチョイ 9a01-mpM/)
垢版 |
2023/01/29(日) 13:50:59.81ID:i3THky500
今WinUI3で5chブラウザ作ってるんだがレスのアンカーだのハイパーリンクだと画像のリンクだのを抜き出す処理を考えてるんだがどうしたものか迷ってる
当然その書かれた位置にそのボタンやリンク貼り付けなきゃいけないんだがアンカーやリンクとその他記事は同じ行にはない(<br>で区切られてる)と仮定して<br>でSplitかけて行ごとでRegexとかを行おうと思ってるけどこの方法あってるか?
228デフォルトの名無しさん (ワッチョイ e301-s91j)
垢版 |
2023/01/29(日) 13:55:11.83ID:8bst+jr10
>>227
自前でパーサー書くよりもその手のスクレイピングライブラリは数多あるからそれ使った方が早いと思う
2023/01/29(日) 15:11:11.20ID:Srs41jrSa
行で区切る意味がわからん
普通に置換しろよ
2023/01/29(日) 15:15:12.51ID:Inli+tITa
WebViewならこれでlinkClickedにjsで独自処理書くなりそこからC#呼び出しするなり

<a xxx="~" href="~" yyy="~" >○○○</a>

<span class="link" data-info="ここに情報を入れる" onclick="linkClicked(this.getAttribute('data-info'))"
>〇〇○</span>
2023/01/29(日) 15:18:44.23ID:9PfpQq5Na
正規表現もこんな感じので充分やろ
<a.+?href="(.+?)".+?>(.+?)</a>
2023/01/29(日) 15:19:58.32ID:I1Pjf1q2a
+じゃなくて*か
233.NET MAUI HighSchool (ワッチョイ 9a01-mpM/)
垢版 |
2023/01/29(日) 16:56:28.41ID:i3THky500
>>229
置換だとコントロールが作れない(ハイパーリンクコントロールなどがそれぞれ必要)
234.NET MAUI HighSchool (ワッチョイ 9a01-mpM/)
垢版 |
2023/01/29(日) 17:00:22.89ID:i3THky500
WebViewでいけたらいきかったけどMVVMのBingingができんかった…(要素名.NativeToString(HTML))なんだけどXAMLにそれがなかったわ…orz
2023/01/29(日) 17:28:42.21ID:pHVlG+oVd
ソフト板の専用スレの連中は役に立たんのか?
2023/01/29(日) 18:01:46.16ID:1KUwXnGJ0
>>234
1.ビヘイビアを作る
2.ユーザーコントロールにWebViewのっけて依存関係プロパティーを設置してVMからコントロール
3.サービスを作ってVでWebViewのっけてからVMにインジェクションする

このどれかが普通かな?
237.NET MAUI HighSchool (ワッチョイ 9a01-mpM/)
垢版 |
2023/01/29(日) 19:07:46.52ID:i3THky500
>>236
なるほどサンクス2が簡単そうかなぁ
238デフォルトの名無しさん (ガックシ 0663-cnaq)
垢版 |
2023/01/29(日) 19:21:55.55ID:XFhpsu3B6
初歩的な質問だと思うが書き込み失礼
win32APIでArduinoとシリアル通信をするコードを書いてる
static void Main(string[] args)
{

SerialPort serialPort;

serialPort = new SerialPort("COM3", 9600, Parity.None, 8, StopBits.One);
serialPort.Open();

while (true)
{
var pt = GetCursorPosition();
Console.WriteLine($"X:{pt.X} Y:{pt.Y}");

if ((pt.X > 500) && (pt.X < 1000) && (pt.Y > 300) && (pt.Y < 600)) {
serialPort.Write($"X:{pt.X} Y:{pt.Y}");
}
else
{

}

Thread.Sleep(100);
Console.Clear();

}

serialPort.Close();
}
Mainの部分がこんな感じなんだが、if文の中にマウスカーソル位置の範囲指定をしていて、カーソルがその範囲に入るとシリアル通信が始まってArduinoに接続したモータが動く(ここまではできた)
でも指定範囲を出るとそのモータが初期位置に戻るコードがうまく書けない。C#側でシリアル通信を中断して初期の段階に戻すような方法ある?elseの中に何書けばいいかわからない。
2023/01/29(日) 19:50:03.63ID:R24XfIrD0
>>238
else
{
serialPort.Write(初期位置);
}
で何か問題あるのかな?
初期位置が何を示すのか知らんけど、シリアルはフロー制御なしなら基本垂れ流しになるから、
開始とか中断の概念は持たない
else節で100ms毎に初期位置座標を送り続けるのが嫌なら送信フラグでも持って送ったか判定すればいいのでは
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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