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

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 0fe3-wadS)
垢版 |
2022/02/09(水) 23:13:39.45ID:1A90hyai0
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)

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

■前スレ
ふらっと C#,C♯,C#(初心者用) Part153
https://mevius.5ch.net/test/read.cgi/tech/1639403601/
■関連スレ
C#, C♯, C#相談室 Part96
https://mevius.5ch.net/test/read.cgi/tech/1639965805/
■コードを貼る場合は↓を使いましょう。
https://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/
https://docs.microsoft.com/en-us/dotnet/standard/class-libraries/
https://referencesource.microsoft.com/
https://source.dot.net/
・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
2022/03/06(日) 13:39:17.39ID:YSSWJmRp0
>>117の追伸

もちろんライセンスとかは守ろうとするけど意識してなかったとかも有り得るけどね
2022/03/06(日) 14:02:37.57ID:gemqlKpJ0
>>116
dobonのコードをそのままコピペするわけじゃないからな
コードそのものじゃなくアルゴリズム自体が著作権法の保護対象になるような創作的なものはdobonにはほぼないと言っていい
2022/03/06(日) 14:21:53.65ID:ePzsPMXHa
Q「○○したいです。どうしたらいいの?」
A「ライセンスがー、ライセンスガー」
なんだこれw
2022/03/06(日) 14:23:47.60ID:Gsk/wVZB0
>>117
恥の上塗り乙
2022/03/06(日) 15:29:34.08ID:iwH3kjY/0
>>119
すみだけど
著作権が保護するの記述されたものなのでコード自体は保護できるけど、アイデアは
保護しないはずなのでアルゴリズムは著作権の保護対象じゃないんでまいか?
アルゴリズムを保護するなら特許権のはずなので、コードのマルコピはNGだけど、
やってることをマネするのは問題なかったはず

アイデアが著作権で保護されちゃうと、誰も異世界転生出来なくなっちゃうよねぇ?w
2022/03/06(日) 16:22:36.60ID:gemqlKpJ0
>>122
広く「やり方/実装方法」という意味だったんだけどアルゴリズムって書いたのがよくなかったね
著作権法の保護対象はアルゴリズムを表現したコードになるんだけど
そのコードの丸コピじゃなくても表現として創作性が認められる部分をコピーしてれば問題になる

小説とプログラムだと保護される度合いが小説のほうが高いんだけど基本は同じ
異世界転生というアイデアの表現として創作性が認められる部分をコピーしてれば著作権侵害になりうるよ
2022/03/06(日) 16:43:39.86ID:jkekLrS80
まためんどくさい話が始まった・・・
2022/03/06(日) 16:48:29.60ID:Gsk/wVZB0
普通にNG
2022/03/06(日) 18:47:49.53ID:FhlzQ0Dn0
ライセンスガー君引っ込みつかなくなってて笑う
2022/03/06(日) 19:06:10.11ID:5Ls8hWzS0
やめたれw
2022/03/06(日) 19:15:30.08ID:aN6u98gQM
お前らのせいでスレがぎすぎすするからやめれ
2022/03/06(日) 19:56:18.29ID:GpPJTCKS0
ライセンス対策なんて怒られてからでいいんだよ
じゃんじゃんパクって日本のIT産業を明るくしてくれ
2022/03/07(月) 10:33:21.04ID:/M6r3uSU0
ここライセンススレだったかw
2022/03/07(月) 14:15:42.70ID:4Ht3Uzhs0
面倒くさい話してないと息の根が止まっちゃう難病でも患ってんのやろな
2022/03/07(月) 15:50:14.81ID:KExIaeukp
非常のライセンス、観てました
2022/03/07(月) 19:20:55.93ID:CiLOZxiFM
子作りライセンス
見ました
2022/03/09(水) 01:28:54.95ID:nnxUiPIy0
木曜日のリカが一言(AA略)
2022/03/11(金) 00:50:56.41ID:wMMa1InP0
Xamarinサポート終了らしいですけどc#でのスマホアプリ開発のFWって今何なんですか?
2022/03/11(金) 00:57:23.97ID:/TmTkpxda
xamarinはmauiに統合されただけだよ
純正と言っていいのか分からないけど純正のはmaui
2022/03/11(金) 00:57:43.51ID:KBALhfIjd
ないよ
MAUIが移行先になる予定だけどポシャる可能性も十分考えられる
2022/03/11(金) 01:04:38.32ID:Sh2rSROO0
何もかも一つ残らず失敗するMS
2022/03/11(金) 08:10:20.54ID:e7+o7NKc0
UIフレームワーク乱立させて何がしたいのかよく判らんね
良さげな技術のやつもあるけど、WPF以降に出た奴はどれも乗り換え先には不安
140デフォルトの名無しさん (ワッチョイ ab01-Ff7g)
垢版 |
2022/03/11(金) 20:41:00.28ID:u82a29l50
学ぶにはコミュニティにお布施しないといけないからなぁ
しかも姫プを始める女が居ると技術系のガチ勢が愛想つかして出ていくから益々過疎化するという
2022/03/11(金) 20:44:05.02ID:bj9xq9MP0
Linux、iOS、Androidまで対応させる…
デスクトップとスマホのUIを統合させたときのバカさ加減に似てますな。
2022/03/11(金) 20:52:37.52ID:H3//uyOGa
スマホとPCを同じUIにするってならバカだけど
xamlで言語切り替えるのと同じ感覚でマルチプラットフォームにできるというのは大きいよ
2022/03/12(土) 08:55:55.47ID:dl+G0hLg0
趣味の延長で小さな会社で一人で業務アプリちまちま作ってるんですが相談させて下さい

VS2019+FrameWorks4.8で帳票とかサードパーティ製入れながらWinFormsで、Linux+MySQLでそれなりの規模に膨れて使ってます

端末の選択肢がWindows機でタッチありで5万で抑えて増やしてましたが、コストの割りに性能低すぎ故障多くてipadとかchromebook、Androidとかの選択肢に切り替えようかと
デスクトップアプリから脱却となると、NET5とかNET6への鞍替えがいるかなと思うのですが、関連書籍もまだあまりでおらず
実際、VS2022いれてNET5かNET6どちらに進むべきですかね
ActiveReportsはNET5は対応していないし、他のサードパティは逆にNET5はOKでNET6はまだだったりですし、WindowsServerもたてれるようにならなきゃかなと思うと、本業片手間でやっているので学習コストも際限なくとはできないですし、稼働しているMySQLのデータは活かしたいところだしで・・何がいいのかわけわからなくなってきて
識者のご意見お伺いしたいです
2022/03/12(土) 10:39:20.39ID:LonchplXd
>>143
SaaSに切り替えりゃいいよ
2022/03/12(土) 10:48:32.30ID:B+2fu+fka
.net5はサポート期間が終わったか終わるかそのくらいの時期だよ
そういうのを真面目に考えるなら.net5はアウト(そういうの気しないなら5でもいい)

新規ではなく、winformからAndroidなどへ移行させるのは面倒だよ
どのくらいwindows依存コードがあるのかにもよるけど。
端末価格(性能に対する価格)はどんどん落ちてくから、俺だったらなんとか耐えつつwindows/FrameWorks4.8でやってくかな
2022/03/12(土) 11:03:57.18ID:dl+G0hLg0
>144
現状現場独自の機能が山ほどあるのでいまからSaaSというのは厳しいです
予算的にも・・・
>>145
となるとnet6をBlazorでちょっとずつ作り直していくてのが現実できですかね
(phpはかじってますが、JavaScriptはできない)
ブラウザベースに移行すればipadでもAndroidでもchromebookでもいけそうですし
ActiveReportsは大丈夫だし、それ以外のサードパーティ製は対応してくるのを待つとして
ネックは現在のサーバをWindowsServerに鞍替えするってことくらいでしょうか
CentOSは何年も触ってますが、Win鯖って扱えるようになるまでの労力って大きいですかね
セキュリティ含めてまでの学習となると相当苦労しそうですが・・・
2022/03/12(土) 11:23:02.57ID:T121kO+WM
>いまからSaaSというのは厳しいです
と思いたいんだろ?
費用なんかお前一人が無駄な努力でドブに捨ててる人件費よりよっぽど安いよ
2022/03/12(土) 11:30:22.00ID:JvvNjppkM
なんでWindows Serverが出てくるんだろう…
2022/03/12(土) 11:32:00.98ID:MLpoR2LT0
帳票印刷のためじゃね
ActiveReportsの印刷機能はWindows依存だし
2022/03/12(土) 11:33:53.48ID:MLpoR2LT0
ていうか、言語のちょっとした質問ならともかく
複合技術でなんかやるって話だともう初心者スレの範疇超えてると思うけどw
2022/03/12(土) 11:34:48.98ID:5CmXj57M0
FrameWorksって何?
2022/03/12(土) 11:45:36.72ID:dl+G0hLg0
>>147
ちょっと調べてみます
>>148
元々端末の追加コストが問題なので、ブラウザベースに移行するとなると
WebAssemblyは肝心のDBが不可とあるようなので
ASP.net Coreサーバー動かすために
WindowsServerが必要という理解なのですが間違ってますか?
>>149
そうです、独自の機能もありますが
大半の機能は画面開いてDBからデータひっぱってきて画面表示、
スタッフが操作して業務管理し、必要に応じて帳票印刷という流れが大半です
>>151
NET Framework、誤字です
すみません
2022/03/12(土) 11:50:42.45ID:MLpoR2LT0
WebAssemblyはDBが不可というか、ブラウザ上で動く技術だから
WebAPIなり挟まないとDBのデータ取ってこれないのよ
DB入出力をWebAPI化するところからだな。パフォーマンスどうなるかは知らんけど。
2022/03/12(土) 12:50:42.71ID:MMCseHWCd
こういうのこそXamarinの本領では?
画面以外のロジックの共有。
2022/03/12(土) 12:58:51.34ID:LonchplXd
>>154
153の言うとおり、こんなの結局WebAPI+薄いクライアントアプリという形にしかならないから画面以外のロジックは元々共有されてるんだよ
無意味
2022/03/12(土) 13:28:09.56ID:pgjQzAZm0
Blazor って想定はBlazor ServerじゃなくてWebAssembly なのか

まあ最大の問題は、帳票をどこからどうやって出すかで
それ以外は別にどうとでもなる
2022/03/12(土) 14:11:31.59ID:5Dc3szfW0
やってもやらんでもどっちでもいいとこばっかりライブラリってできるんだよね
2022/03/12(土) 14:18:56.82ID:Taqa0P0FM
ASP.Net CoreはLinuxで普通に動くよ
帳票の中身次第だがシステム的にはWeb化するのが常道

でもWebアプリの維持管理やセキュリティ対策とか趣味レベルで対応できるのか疑問だから
別の方法考えたほうがいいのかもね
2022/03/12(土) 14:32:11.13ID:MMCseHWCd
>>155
とはいえWCFも無くなったし、WebAPIに簡単にはならんでしょ。
負荷もサーバ側にどーんと乗るのでバランスも悪い。
2022/03/12(土) 15:14:08.73ID:WKXTy9Q3M
移行にかかるコストや時間を考えれば短期的には端末スペックあげるほうが断然良さそうだね
2022/03/12(土) 15:26:49.92ID:MMCseHWCd
端末スペックで殴るのが一番楽はもちろんそうだけど、業務時間に少しだけ使うならAzureでデスクトップ借りてシンクラよろしくRDPすんのもアリかもね。
2022/03/12(土) 15:38:30.18ID:WugjRoTQM
>>143の時点ではクライアントアプリだったのをWebアプリにしようとしてるのかな?
正直小規模な会社なら>>145の言うようにWinForms + .NETFramework 4.8で良いような気がする
2022/03/12(土) 16:46:13.52ID:MLpoR2LT0
まあ規模次第だね
Web化するとデプロイの手間は軽減されるけど、少数台くらいだとあまり旨みがない
それなら端末に多少金掛かった方がマシ
2022/03/12(土) 17:00:48.11ID:dl+G0hLg0
皆さんアドバイスありがとうございます

>>162
そうです、重い作業はデスクトップで、軽いのは小さいタブレットPC(ほとんどAtom)で
端末ごとに認証時に動作モードを変えて異なる画面サイズに対応させています
Atom機は遅いし故障も多いし、破損も多い・・・という状況で苦慮してます

移行の労力を考えるとやっぱりそのままいくのが一番妥当というところなんですね・・・
安くて性能の高いものが出てくるのも期待しつつ
軽い作業で使っている台数の多いAtomのものをせめてN4000番台に入れ替えながら耐えて
稼働している部分は触れずに、暇なときにLinuxにASP.NetCoreいれてWebアプリ開発にチャレンジして
徐々に軽い方だけ切り替えていく方向で考えてみます
2022/03/12(土) 17:04:39.68ID:zW5va19F0
webでC#は流石にどうかと思うんだけどねぇw
コードを流用したい?とかなのかも知れないが
まだUnityとかの方がマシな気がするし
実際Unityで業務アプリ作ってたりしている所もあるらしい

個人的にはwebにするならPHPとかで作り直した方が良いと思うけどね
C#でweb化、過去の資産があるから短期間でみたいな仕事が来たら速攻で断るw
2022/03/12(土) 17:21:57.02ID:pgjQzAZm0
単純にC#でweb化っていってもな
MVCもあるし、Blazor ServerもWebAssemblyもある
そろそろ本気でBlazor評価しとかんといかんなぁ

過去の資産があるから短期間でみたいな仕事は
言語がどうだろうが環境がどうだろうがヤバイ匂いしかしないがな

つかAtomのタブレットってそんなに壊れるのか?
安物買いの銭失いとはよく言った気がするが
2022/03/12(土) 17:30:08.01ID:MLpoR2LT0
壊れる理由によるな
現場の扱い悪いなら、何使ってもすぐ壊れそうな気もするが
2022/03/12(土) 17:39:01.24ID:x75wVy6A0

WebバックエンドでC#なんて最高に相性いいじゃない。
EFのおかげでDB周りも楽だし。

フロントUIはAngularなりReactなり任せちゃえばいいし。
PHPとかnodeとか言ってるのはあれか、アクセス数少なくてパフォーマンス気にしなくてもいい人たちか。
2022/03/12(土) 17:43:50.76ID:olrB42jq0
ショボいスペックのPCにそこそこの要求スペックのWindows入れること自体ねぇ

アプデもあるし2年もすれば時代遅れになるだろうことは想像できるけど

ハードウェアが壊れるかどうかは知らん
2022/03/12(土) 17:49:23.16ID:xsaO6v3ar
WebでC#ってローカルでDockerで構築してAWSとかにLinuxイメージごとデプロイするの?
2022/03/12(土) 18:17:01.12ID:JKJATSZJa
phpなんかでやるのと同じ。(phpはビルドないけど)ビルド結果だけをデプロイだよ
2022/03/12(土) 18:47:52.84ID:xsaO6v3ar
なるほど
ちなみにWebアプリの場合でも今はASP.net?もしくは.Net6?
いまいちどのフレームワーク使うのかわからん
2022/03/12(土) 18:50:58.36ID:kGvMtDUe0
なんか色々ごっちゃになってると思う
まぁMSのフレームワークの概念は自分も一時期混乱した
.net standardとか何だったの
2022/03/12(土) 18:51:04.71ID:xRtLdflG0
大食らいなブラウザと大層なフレームワークが満足に動くならロートルのWinFormsやWPFなんかスカスカ動かんか?
2022/03/12(土) 19:38:13.21ID:jj9bNUpZ0
ついさっき
(x, y) = (y, x)
こういう書き方ができるのに気付いたんだけど、これいつから出来るようになったん?
2022/03/12(土) 19:42:10.83ID:5Dc3szfW0
>>175
タプルっぽくね?
2022/03/12(土) 19:43:29.39ID:olrB42jq0
タプルが導入された当初からじゃないの?
2022/03/12(土) 19:59:58.59ID:jj9bNUpZ0
Pythonでは
x, y = y, x
ってできるの知ってたけど、C#ではできないと思ってた
2022/03/13(日) 00:00:51.74ID:u39Ee70g0
powershellから呼び出せるC#じゃできないけど?
csc.exeのバージョンも4.8とかそんなんだし
2022/03/13(日) 01:36:37.26ID:Z9Glx4pW0
自分のメールアドレスに打った文章を送るコードなのですがうまく動作しません
具体的に言うとgmail宛に何も届かないです
何処を改善すればいいのでしょうか?

https://ideone.com/1GsDjn
2022/03/13(日) 01:59:10.72ID:cmsw373x0
catchで何もしないのはやめよう
せめてログに出すとかさ

> SmtpClient server = new SmtpClient("自分のメール@gmail.com");
> mail.From = new MailAddress("email");
> mail.To.Add("dest");
パラメータ滅茶苦茶
SmtpClientに渡すのは通信先のSMTPサーバの情報
Toが送信先メールアドレス
SMTPサーバはGmailのが使えるようだから調べてみて

あとSystem.Net.Mailはもう非推奨 代替としてMailKitとか挙げられてる
2022/03/13(日) 02:01:10.18ID:jngzL68oa
gmailのアカウント側でsmtp有効にしてるかとか確認したら?
あとgmailのsmtpはあと3か月ぐらいで全面的に使えなくなるから仮に作れてもすぐ使えなくなるよ
2022/03/13(日) 03:18:43.91ID:5qwn5s+60
やべーelse ifが見えた時点で読むのやめたんだが

まず問題の切り分けからだね
このコードはgoogle.comのメールサーバー(mail.google.co.jpだと思うんだけどなぁ)に対してメールを直接投げるやつ?

それともgoogle.comの自分のアカウントにログインしてからまた別のメールアドレスにメールを投げるやつ?

あとkeyとか色々作る前に定型分のテストメールにしなよ

To: dest@gmail.com
From: my-account@gmail.com
Subject: TestMail

This is test mail No. 1.
.
2022/03/13(日) 05:56:09.15ID:m8v9NYfn0
>>175
三つ目の変数無しで値の入れ替えが出来るって理解で良いの?
2022/03/13(日) 08:02:23.19ID:roEKlQ2p0
タプルはずっとまえからじゃん。
もう5年たつんじなないのそれ。
2022/03/13(日) 08:03:34.17ID:roEKlQ2p0
もしかしてC#が複数の値をリターン出来るとかも知らんのかな?
2022/03/13(日) 09:01:18.15ID:1ZaIS7m70
( ´ー`)   < シラネーヨ
2022/03/13(日) 10:10:05.19ID:IGUcP/is0
宣言と定義の違いってどうなってますか?
C++ではint x;は定義なんですよね?
C#ではint x;は宣言のような気がします...
2022/03/13(日) 10:29:47.04ID:vXOJHn5g0
>>188
どちらも宣言

https://docs.microsoft.com/ja-jp/cpp/cpp/declarations-and-definitions-cpp?view=msvc-170 では「宣言」となっている
「定義」は場合にもよるとは思うけど、(自作の)関数やクラスの定義の意味で使う

変数については宣言って言うね
190デフォルトの名無しさん (ワッチョイ 2e68-pPbi)
垢版 |
2022/03/13(日) 10:37:14.46ID:IGUcP/is0
>>189
ありがとうございます
ちなusingやnamespceは定義ですか?
2022/03/13(日) 10:46:29.13ID:vXOJHn5g0
>>190
自分の場合はnamespaceで包むときは定義、使うときは単に「使う」系かな

定義(definition)は文字通り、「(存在してなかったものを)こういうものだと決めること」だと思ってる

さっき挙げたページでいうN::Cやfのような処理や型自体が存在してなくて、それを「こういうやつだ」と決めてコンパイラに教えているね

変数とかの宣言(declaration)は「この変数はこの型として使うよ」っていうイメージかな

だからC#だと using System;は https://docs.microsoft.com/ja-jp/cpp/cpp/using-declaration?view=msvc-170 だと「using 宣言」てなってるから宣言かな
2022/03/13(日) 10:47:50.99ID:vXOJHn5g0
191だけど、ミスった

参考ページを提示しているusingのところはC++のやつに読み替えてね
193デフォルトの名無しさん (ワッチョイ 2e68-pPbi)
垢版 |
2022/03/13(日) 10:49:58.20ID:IGUcP/is0
>>191
ありがとうございます
参考にします
2022/03/13(日) 23:57:03.38ID:Z9Glx4pW0
>>181 >>183
ありがとうございます
アドバイス通り引数を直したんですがメール送られてこず…でした
仰るとおり自分のメールアドレスにログインして別のメールアドレスにメールを送るプログラムなんですが
何処を直したら正常に機能しそうですかね
2022/03/14(月) 00:07:12.67ID:jx7Gq6xC0
180のメールメソッドの内容を
https://ideone.com/9IoPl4
に変えたのですが変化無しでした。1から考え直すしかないでしょうか
2022/03/14(月) 00:35:23.85ID:uIprxjAI0
https://docs.microsoft.com/ja-jp/dotnet/api/system.net.mail.smtpclient.send?view=net-6.0#system-net-mail-smtpclient-send(system-net-mail-mailmessage)

失敗したらなんかのExceptionが投げられるみたいだから
catch(Exception ex){ Console.Error.WriteIine(ex);}
してみろ以上のことが言えん
2022/03/14(月) 00:44:53.46ID:k1s/giD10
IE7ベースのWebbrorser が古いので新たに使うとしたら
Webviw2 と CefSharp どっちがいいですか?
2022/03/14(月) 00:57:27.18ID:XtxfFNUva
好きにしろよ
俺はwebview2一択だと思ってる
2022/03/14(月) 01:33:25.53ID:j1ckIHBu0
CefSharpは起動重いな。
WebVieW2は速いがあまり浸透してないコンポーネントのインストールが必要だわな。
2022/03/14(月) 10:17:48.69ID:/kSWYd/QM
Chromium関連のファイルサイズがでかいからそのへん気になるならWebView2
MSを信用しないならCefSharp
2022/03/14(月) 14:06:43.59ID:fKAVqTeN0
WebView2 以前ちょっと使ったけど、ページ表示前の初期化が毎回遅かったような記憶がある。
記憶違いかもしれないけど。
2022/03/14(月) 14:24:28.43ID:XtxfFNUva
コンストラクタでurl代入できりゃいいのに、その頃はまだ内部での初期化が終わってないからできないな
2022/03/14(月) 14:55:17.24ID:akZZG4oSr
Webは戻る進むがあるからしっかりステート管理しないとしぬ
204デフォルトの名無しさん (ワッチョイ 12bd-eKgF)
垢版 |
2022/03/14(月) 21:53:50.24ID:3nbBdTge0
簡単な図形データをdxfファイルにしてみたいんですけど、どこか参考になるサイトないですか?

幅500o✖長さ1000oの長方形枠内に円とか長方形とかそんな感じのもので、レイヤーとか線種とかとくなく実線のみで表現したいんですけど。
2022/03/14(月) 22:00:22.47ID:Wh2n8FEC0
https://www.codeproject.com/Articles/156522/DXF-Import-NET-Read-and-View-AutoCAD-Format-Files
2022/03/14(月) 23:03:31.17ID:rbCSOV+9a
dxfを読みたいっていうとバイナリだ3dだ色だなんだって色々なパターンあるから大変だけど
dxfを書き出したいってだけなら難しいこと考えずに適当に「dxf ファイル仕様」とかぐぐって調べたらいいよ
207デフォルトの名無しさん (スプッッ Sda2-eKgF)
垢版 |
2022/03/15(火) 06:37:09.86ID:Hxz/HcaZd
ありがとうございます!
2022/03/15(火) 07:49:26.57ID:FHh5bEnc0
いえいえ
2022/03/16(水) 17:05:06.84ID:KL1RQagld
formsでスケーリング変えると部品の位置がズレたりするんだけど、
是正する定番の方法あったら教えてたもれ
2022/03/16(水) 17:51:38.31ID:sDB+P2C+0
>>209
フォームのサイズが変更されたとき?

サイズ変更についてなら「サイズが変更された」ときのイベント内で再計算するか、Panel系クラスを利用して表示するかだと思う

フォームの大きさを小さくしたら下に回り込むようなやつならFlowLayoutPanelで、HTMLでいうテーブルならTableLayoutPanelとか

Panel系にDockをFillにしたりすれば再計算はプログラムがやってくれる
2022/03/16(水) 18:39:08.14ID:3Hj+1jHn0
スケーリング変えた時、だろ
2022/03/16(水) 18:55:49.03ID:IT+0ZBM10
>>209 ですが、
色気を出して最初にSetProcessDPIAware()を呼んでたので、これ呼ぶのをやめたらズレは直りました。
これはフォントがボヤンとするいわゆるDPI仮想化状態ですね。
ただこれだと座標取得関係に難ありだったと記憶してるので、
SetProcessDPIAware()を呼び出しつつ、
form1.AutoScaleMode = AutoScaleMode.Dpi;
にするとコントロールのズレは収まりました。フォントの大きさの再調整は必要ですがこれが良さそうです。
一旦問題を整理してみます。
2022/03/16(水) 19:24:24.87ID:gx2+2oye0
>>212
スケーリングに対応する場合は、フォントはBMPを含まないメイリオやYu Gothic UI等を使うと良いよ
2022/03/16(水) 19:46:22.48ID:qedjxSBq0
グリッドレイアウト

でググると参考になるかもしれん

もちろんGuiがおおっぴらにサポートしているわけではないが
どうしたいかの参考になると思う
2022/03/16(水) 21:22:24.16ID:IT+0ZBM10
コントロールのフォントを自動調節するやつできたんでとりあえず解決しました。
void AutoFitFontControl(Control ctl, string fontname, int maxpoint) {
var g = System.Drawing.Graphics.FromHwnd(ctl.Handle);
var point = maxpoint;
for (;;) {
SizeF sf = g.MeasureString(ctl.Text, new Font(fontname, point));
if (ctl.Width < (int)(sf.Width) || ctl.Height < (int)(sf.Height)) {
point -= 2;
} else {
break;
}
}
ctl.Font = new Font(fontname, point);
}
216デフォルトの名無しさん (ワッチョイ 6936-dw4a)
垢版 |
2022/03/17(木) 09:57:20.56ID:8n4FcalY0
C#勉強中で分からない点があるので質問です
テキストボックスをデータバインドしていてViewModel側はstringでSetPropertyで双方向としていて
テキストボックスでキー入力されてもコード上でstringの値を代入等で変えても画面に表示されている値と内部で保持している値が一致するようにしています

これをstringから独自のクラス、例えば電話番号クラスとかにするとテキストボックスにキー入力しても内部で保持している値に書き換わってしまうのですがこれって何に原因があるのでしょうか?

View側の処理
TelephoneTextBox.DataBindings.Add("Text", viewModel, nameof(ViewModel.Telephone));

ViewModel側の処理
public TelephoneValue Telephone
{
get => _telephone;
set => SetProperty(ref _telephone, value);
}

TelephoneValueは内部にstringを持っていてToString()でstringを返しています
2022/03/17(木) 12:22:14.37ID:Mvnns9V0d
>>216
あなたがどっかで定義したTelephoneValue型はxamlが理解できるものじゃない

TelephoneValueを1引数のstringで構築できるかもしれんがそんなことは知ったこっちゃない
(Converterを自作すればなんとかなるかもしれんが)
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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