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

■ このスレッドは過去ログ倉庫に格納されています
2021/03/23(火) 12:58:24.10ID:ACoFzk2L0
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)

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

■前スレ
ふらっと C#,C♯,C#(初心者用) Part149
http://mevius.5ch.net/test/read.cgi/tech/1608085775/
■関連スレ
C#, C♯, C#相談室 Part94
https://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/
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
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2021/04/19(月) 10:04:55.77ID:aTPYfb0+0
>>277
List<Action<bool>> list;
list.Add(b => hoge = b);
こういうこと?
2021/04/19(月) 10:21:06.38ID:8YZTYag9M
まあ気持ちはわかる
(Webでなく)GUIアプリで独学した初心者って、エンティティオブジェクトをアプリ全体で生存させるような設計をしちゃうんだよな
オブジェクト指向を普通に解釈すりゃそれが自然なんだけど、実際そういう設計はしないんだよ
ドメインモデルだろうとトランザクションスクリプトだろうと、エンティティはトランザクション毎に作る
2021/04/19(月) 10:39:20.82ID:X+u8pzLd0
>>274
知らないって決めつけてるのはどうかと思う
単にどうしてるのか聞いているだけ
282デフォルトの名無しさん (ベーイモ MM4f-XYuH)
垢版 |
2021/04/19(月) 10:44:42.24ID:7XobiDdgM
>>278破棄と生成できれば良いのですがちょっと難しい。ユーザーコントロールでバインドしていて各コントロールは値を参照しあってます
今回は画面が切り替わったときに表示非表示を変える戻す、なので直接は関係ないのですが影響度を減らしたい
>>279
>>276見直してプロパティを直接でなくてもラムダ式でいけそうなことに気付き>>279さんの形を思い浮かびました、今出掛けてるので確認は後ですが多分解決できそうです

皆様ありがとうございます
解決しなければまた聞くかもです
ありがとうございます
2021/04/19(月) 10:58:10.70ID:Ee/wQKnTM
>>281
知ってて聞くのはもっとどうかと思う
2021/04/19(月) 12:13:19.27ID:lMV2Jqgd0
>>282
なんだかとってもおかしいよ
2021/04/19(月) 12:18:18.64ID:lMV2Jqgd0
これあれじゃね?
開始日と終了日に期間制限があると値が設定できないやつ(笑)
2021/04/19(月) 12:41:53.53ID:/vkKNniZa
何がしたいのかよく分からないね。

キャンセル要求が発生したら初期状態に戻したいなら
素直に初期状態をまるごとキャッシュしておく方が分かりやすいんじゃないかと思うけど

もっと素直なのはそもそもApplyするまでUIの値をモデルに反映しないことだよね。

まあたぶん要件を説明しきれてないんだろうけど
2021/04/19(月) 12:42:25.65ID:eG8AP0Ht0
>>282
元に戻す処理を管理したほうがいいケースなのか
元の状態を管理したほうがいいケースなのかを考えたほうがいいよ
2021/04/19(月) 13:39:27.50ID:lMV2Jqgd0
まあ、設定画面がモードレスでリアルタイムで値を変えたいときもあるかもしれんが
それやると
地獄の一丁目にご招待って感じ(笑)
2021/04/19(月) 13:46:03.66ID:0ewLpJwG0
Contract?
2021/04/19(月) 13:50:22.81ID:wot3CwpcM
>>288
更にundo/redoの機能を付けてくれまいか?

で更なる深淵へw
2021/04/19(月) 14:13:33.61ID:lMV2Jqgd0
>>290
影響する値でエラーが出てもそれとは関係ない表示はできる限り続けて欲しい(プレビューが見えないから)
エラーが出てるときは値の変更で表示は変わっても最後の反映はできないようにしてほしい
でも値を変更してる最中のundo,redoは効くようにして欲しい

って割とありがち要求だよね

モードレスやった時点で地獄を覚悟しろって感じ
292デフォルトの名無しさん (ラクッペペ MM8f-ZP9E)
垢版 |
2021/04/19(月) 14:17:30.66ID:5/g8GOz6M
そのためのMVVMですから!
2021/04/19(月) 16:11:25.84ID:X+u8pzLd0
>>283
めんどくさいのに本当にしてるのか気になったから聞いたんだけど何かおかしい?
2021/04/19(月) 16:13:54.25ID:LEIxqEAm0
うちにも本当にしてる端末はあるぞ。
むしろ自動で上げたくないしな。
既知の問題でワークアラウンドがあるならそれで良いというケースもあるし。
リリースノートめちゃくちゃ読む。
2021/04/19(月) 16:51:10.44ID:qG+FkDTLM
>>293
ネットに繋げないならそうするしかないし言うほど面倒でもないだろ
そもそもネットに繋いでる場合でもアップデートがある度に適用なんてしないよ
>>294が書いてるように修正内容見て影響ないとかワークアラウンドがあるなら適用しない
2021/04/19(月) 16:56:35.95ID:Ly5FRhD3d
オフラインがめんどうとか何言ってんの?開発する時にはセキュリティ上当然やろ
オンラインとか最近の開発ではありえない
2021/04/19(月) 17:17:52.34ID:ssZtrIutM
今のVSって最新メジャーバージョンは完全に人柱向けだからなあ
アップデートをすぐに入れられないような環境だと詰む可能性があるからむしろリスクが大きい
最新版を追えない環境なら2017使ったほうがいいよ
2021/04/19(月) 17:59:46.65ID:sAdoeVNCM
更新頻度はどちらも大して変わらん

https://docs.microsoft.com/ja-jp/visualstudio/releases/2019/release-notes#visual-studio-2019-version-169-releases

https://docs.microsoft.com/ja-jp/visualstudio/releasenotes/vs2017-relnotes#visual-studio-2017-version-159-releases
2021/04/19(月) 18:14:05.65ID:HuLqOw9zM
>>298
中身読めよ
2017の方は脆弱性修正と軽微なバグ修正しかやってない
2021/04/20(火) 00:39:35.61ID:TLYpp//E0
docker「…」
2021/04/20(火) 02:18:25.03ID:hE4KV5oa0
C#を勉強中です
Delegateの機能はわかったのですが、これはどのような状況で使うのか思いつきません
こう使うと便利だという例を教えてください
2021/04/20(火) 02:19:59.60ID:X693LKGY0
それは繊細な問題ですね
2021/04/20(火) 02:23:17.77ID:mCU9Z3ky0
delegateの機能が解説されていた箇所に書いてなかったの?書いてあったけどそれを理解できないってこと?
2021/04/20(火) 02:33:44.44ID:KMnW7zDR0
>>301
そのわかったというDelegateの機能を説明してみてもらってもいい?
2021/04/20(火) 02:54:23.22ID:C6K6mBrBa
>>301
真面目な話、無理に今理解しようとしなくていいと思うよ。
コード書き出ぜば自然に分かる。
後回しにして先に進んだ方が吉。
2021/04/20(火) 03:07:10.55ID:hE4KV5oa0
>>303
機能の解説だけでどのようなときに使うかは書いてなかったです

Delegate型の説明と作り方の後に例としてConsole.WriteLineでHelloと表示するメソッドを
新たに作ったDelegate型のaという変数に突っ込んでa()を実行して
ほら表示できたでしょという感じだったのだけれど
だからどうしたとしか思わなかったです
2021/04/20(火) 03:22:02.21ID:HBCxLvi90
自分も変数のシャドーイングとか何が便利なのかわからないです
脳みそのメモリ圧迫されるのでは
2021/04/20(火) 03:27:57.34ID:HBCxLvi90
>>306
こういうメソッドの引数がデリゲートで、まさに便利な使い方だと思ってる
https://docs.microsoft.com/ja-jp/dotnet/api/system.collections.generic.list-1.removeall?view=net-5.0

間違ってたら訂正よろしくです
2021/04/20(火) 03:33:39.19ID:hE4KV5oa0
>>308
これがdelegateだとしたら意識しないで使ってました
まさかこれが..
2021/04/20(火) 04:41:05.35ID:IRlXB/YU0
デリゲートは自分で使うもんじゃないと思ってた。
Buttonをクリックしたら、このメソッド実行してねってのを、IDEが作ってくれる奴だから。

だから、「こんなときどうしよう」って悩んだときに、
そうだ!デレゲートってのがあるんだよ!っていう、よっぽどの場合に、入門書を読めば良いと思う。
初めてのC#みたいな本がお薦めなんだけどね。
2021/04/20(火) 05:04:14.96ID:mPkgRyxP0
>>306
試しにhello2 からhello100まで突っ込んでみよう
2021/04/20(火) 08:17:28.06ID:UlsxkGg7D
デリゲート定期
313デフォルトの名無しさん (ラクッペペ MM8f-ZP9E)
垢版 |
2021/04/20(火) 08:29:39.05ID:2x6gxMkWM
デリケートに好きして
2021/04/20(火) 09:39:52.16ID:KMnW7zDR0
>>306
わからなかったらまず最初にリファレンスを読むといい
Delegateとは何かどういう目的で使われるのか普通に書いてる
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/delegates/
2021/04/20(火) 09:49:15.79ID:UooL86SRr
まあこういうものが腹に落ちるようになるのが楽しいとこでもある
2021/04/20(火) 11:01:31.30ID:wGU9ai2r0
>>313
パジャマのままで
2021/04/20(火) 12:07:45.54ID:7xfghfsY0
例えば、Ruby では、Forwardable でインスタンス変数に委譲できる

自分で配列クラスから、Stack を作って、その内のpush, pop だけを使いたい場合、
もし配列を継承・is-a すると、余計なメソッドまで継承してしまうので、それらを使いたくない。
そういう場合に、委譲・has-a で、インスタンス変数に委譲して、使うメソッドも限定できる

Go, Elixir も継承がない、委譲だけ。
継承は大掛かり。
使わないメソッドを呼ばれてしまう可能性があるから

また、誰でも使うような、String クラスなどを継承して、メソッドを追加されるのも嫌。
そういう継承は想定外だから

素人は、よくそういう事をする。
継承用のクラスじゃないのに継承したりする

require 'forwardable'

class Stack
extend Forwardable

def initialize( ) @ary = [ ] end
def_delegators( :@ary, :push, :pop )
end

stack = Stack.new
stack.push 1
stack.push 2
stack.pop

p stack #=> #<Stack: @ary=[1]>
2021/04/20(火) 12:25:42.67ID:7xfghfsY0
>>307
shadowing とは、内外の変数は、別々の扱いで、
内側のスコープに入ると、内側が優先されて、
外側の同じ変数名が隠されること。
その際、外側の変数には影響を与えない。

Ruby では、外側のa は10で、内側のブロックスコープでは、
同名の変数aを使っても、外側の変数には影響を与えない。
ブロックスコープを抜けると、aは10のまま

a = 10
ary = [ 1, 2 ]

ary.each do |a|
puts "ブロック内: #{ a }"
end

p a

出力
ブロック内: 1
ブロック内: 2
10
2021/04/20(火) 13:01:47.56ID:TyJgyLsfa
このスレはRubyの宝石箱や!まで読んだ。
2021/04/20(火) 20:38:25.40ID:mPkgRyxP0
火入れするかあんたのはスピネルや
と言うべきか
2021/04/20(火) 21:04:57.15ID:HBCxLvi90
なにかのネタというかエンジニアジョークなのかな? わからないや

シャドーイングがどんな機能なのかは単純だからわかってるつもりだけど、一見同じ変数名を扱えることで何が嬉しいの?って話です
コード読んでて混乱しそうなので無い方が綺麗だと思うのだが、自分の脳みそが貧弱なだけかな?
322デフォルトの名無しさん (ワッチョイ bf68-Zgro)
垢版 |
2021/04/20(火) 21:05:35.48ID:3ANNQsEU0
c から来た人なんだけど、デリゲートって関数ポインターの認識
323デフォルトの名無しさん (ワッチョイ bf68-Zgro)
垢版 |
2021/04/20(火) 21:08:17.98ID:3ANNQsEU0
半角の++が書き込めない。なんだこれ。
2021/04/20(火) 21:28:46.29ID:mPkgRyxP0
>>322
それがリストになっているので
複数の呼び出しを一気に行える。
という感じ
2021/04/20(火) 22:48:16.53ID:wpz1WDBF0
メモリリークの温床だがな。。
2021/04/20(火) 23:13:15.40ID:oW++joyya
>>321
嬉しいでしょ。
まあぶっちゃけフィールドをローカル変数で隠蔽することはあまりないと思うけどね。

>>322
Cより機械語レベルで考えた方が分かりやすいね。
要はcall命令のオペランドだよね
厳密にはthisポインタの情報を含むから違うんだろうけど概念的には
2021/04/20(火) 23:17:25.34ID:+w5LC8La0
初歩的な質問ですいません
オブジェクト初期化子とコンストラクタは何が違うんでしょうか?
やってることは同じのように感じるのですが…
2021/04/21(水) 01:35:22.73ID:qZ+z+JK20
>>324
デリケートって追加や削除されるたびに全リストコピーしてるんだっけ?
ぶっちゃけ効率考えたらデリケートよりインターフェースをリストで持たせた方が効率はいいよね
2021/04/21(水) 01:38:27.35ID:GnM/pYwY0
どいつもこいつもデリケートデリケートってよお!
2021/04/21(水) 02:00:12.49ID:9Dxtj7zY0
♪シーズソーデリケート(デリケート、デリケート)
2021/04/21(水) 05:50:25.83ID:iaWKhvh90
>>327
初期化子は参照側が任意に行う。代入しか出来ない。
コンストラクタはオブジェクト側が初期化のルールを決めて、ロジックが書ける。
ってことじゃないのかな。
2021/04/21(水) 09:15:40.20ID:hAG7zCyL0
>>327
コンストラクタにはそのオブェクトを生成するために必要なものを渡してる
初期化子は特に生成には関係ないない項目にも初期値を設定してるイメージ
使う側はあまり気にしなくていいけど用意する側は意識しといた方がいいよ
2021/04/21(水) 09:18:16.78ID:zaNQ2p2Bd
>>327
初期化子はフィールド単体に対しての初期化で、コンストラクタはクラス全体に対しての初期化って考えたらイメージしやすいかも
まあ、初期化子を指定しない場合でも、def aultで初期化されるんだけどね
2021/04/21(水) 11:04:40.00ID:9tzd621Ta
>>327
そもそも問題設定が間違っていると思うよ。
正しい問題設定は「オブジェクト初期化子って何?」

オブジェクト初期化子とは、コンストラクタ呼び出しと、複数の任意のプロパティーやフィールドへの
値の設定をインラインで書けるようにした糖衣構文。
2021/04/21(水) 16:34:49.04ID:yCZSrEkI0
>>326
実を言うとnull safetyのせいで隠蔽したくなるんだな

もちろん、別の名前つければいいけど
2021/04/21(水) 16:56:18.92ID:yCZSrEkI0
C#に限らずnull safetyの言語で、特にビューモデルのクラスでnullableなフィールドを宣言する機会が多いいんだが、
フィールドはメソッド内でnullチェックしても非nullableに昇格しない(kotlinでいうスマートキャストが効かない)
から、
if (field == null)
 throw new IllegalState
var field = field!; // わざわざnon nullableなローカル変数に代入で、ローカル変数に適当な名前が思い付かないのでフィールド名と同じ名前で隠蔽
2021/04/21(水) 17:04:17.58ID:yCZSrEkI0
メソッド内で1,2回とか参照しないのであればわざわざnon nullableなローカル変数に代入しないが

特にkotlinとかスコープ演算子とかもあるがkotlinは「!!」と二重だからこれがいっぱい現れるとソースが見苦しい...
2021/04/21(水) 22:17:44.76ID:4gUtTQ4z0
>>333
違うだろ。C#ならフィールドとプロパティをきちんと区別しないといかん。
2021/04/22(木) 08:19:06.23ID:b0xCXWo1M
x = a ?? b; ←null合体演算子

x.?method() ←これなんて言うんだっけ?
2021/04/22(木) 08:59:45.35ID:bBpUq1Fa0
ピリオドとクエスチョンの位置逆だけどnull条件演算子
341デフォルトの名無しさん (ワッチョイ d76e-vWSz)
垢版 |
2021/04/22(木) 10:42:48.70ID:XvsGXOnj0
linuxとwindowsで動くguiソフト作りたいんですが、共通の開発環境と言語ってあるでしょうか?
openglを扱ってみたいのですが、c++とqtが多いんでしょうか?
c++を扱うと思うので、erectronやwxpythonなどは除外されるんでしょうかね。
2021/04/22(木) 11:01:31.56ID:8IHXhPWQM
>>341
C++の話をするのに何故C#のスレに来たの?
2021/04/22(木) 11:15:40.26ID:wjS6T4Xy0
>>339
逆にnullだったらそのままにしたいってことが多いんだけどそういう演算子ないよね

int? x = null;
int? 2x = (x == null ) ? null : (2 * x);

みたいな
344デフォルトの名無しさん (ワッチョイ d76e-vWSz)
垢版 |
2021/04/22(木) 11:16:13.25ID:XvsGXOnj0
opengl関係無いアプリも作りたいので(´・ω・`)
c#は恐らくlinuxでは動かないものですよね
2021/04/22(木) 12:12:49.77ID:fYKo/KH70
>>343
nullだったらメソッドやプロパティにアクセスせずnullを返すのがnull条件演算子(?.)
そのint?のケースは単に`2 * x`でnullが返されるようになってる
2021/04/22(木) 12:36:03.10ID:TgsR4gUfM
>>344
人脈があれば出来るぞ
2021/04/22(木) 13:12:31.50ID:V2Z7bz83a
>>344
Unityならwindowsでもlinuxでも動くはず
2021/04/22(木) 13:26:29.41ID:r34CJZmP0
.NET MAUIがそういうの目指してるんだろうけれど…
349デフォルトの名無しさん (ワッチョイ d76e-vWSz)
垢版 |
2021/04/22(木) 14:05:53.62ID:XvsGXOnj0
>>347
unityをguiアプリ開発に使いませんよね 普通
2021/04/22(木) 14:23:56.91ID:wSGfQWAL0
>>349
mono 使えばいいんじゃないの?
2021/04/22(木) 15:04:02.14ID:wjS6T4Xy0
>>345
条件演算子を使えないパターンの例をあげたつもりだったんだけどそういう動作すんのか
x.method()に対応するならmethod(x);にも対応してくれてもいいのにって思った
352デフォルトの名無しさん (ワッチョイ d76e-vWSz)
垢版 |
2021/04/22(木) 15:44:38.28ID:XvsGXOnj0
>>350
monoやxamarinはc#ですよね。
c#製アプリはlinuxで動かないと効かされていましたが。
あと、openglなので、c++ではないですか?
2021/04/22(木) 15:47:59.35ID:TgsR4gUfM
.net core も動くぞ
354デフォルトの名無しさん (ワッチョイ 778e-u7Bp)
垢版 |
2021/04/22(木) 17:02:51.26ID:RDEPc8rd0
釣りだろ
2021/04/22(木) 20:02:51.51ID:YBnx4+wd0
なんでも釣りって言わないで
2021/04/22(木) 21:59:40.16ID:8RSzlZOe0
なんでguiにunity勧める奴いるのw
2021/04/22(木) 22:01:36.51ID:itFZ12540
何にでもRuby勧める奴もいるだろ
2021/04/22(木) 22:05:49.71ID:JJ/RFZ5mM
まあC#スレでC++連呼してるのは釣りか底抜けのバカのどちらかだからいずれにせよスルーが基本かと
2021/04/23(金) 21:53:03.64ID:e/IHU4YJd
c#でPCがアイドル状態か否か判定したくて
マウスの動きが一定時間なしで判定するのは出来たんだけど
マウスを動かさずブラウザで動画再生しているときにもアイドル状態ではない判定にしたいんだけど
どうすれば判定取れるでしょうか
2021/04/23(金) 22:15:06.79ID:2LOGdF5/0
特定のキー押下でアイドル判定されない状態を追加して置いた方が今後楽じゃないかな?
2021/04/23(金) 22:40:41.15ID:vlx7cXWJ0
メディアプレイヤーの類で動画再生は構わないの?
ブラウザのバックグランドタブで再生中の場合は?

一応各プロセス各スレッドがSetExecutionStateした結果のステートはこんな感じで取れるらしい
https://stackoverflow.com/questions/10970625/how-windows-decides-to-show-the-screensave
2021/04/23(金) 22:41:57.81ID:vlx7cXWJ0
SetThreadExecutionStateだった
2021/04/23(金) 23:45:20.80ID:tWGuVFO60
その他の案
スクリーンセーバーのプロセスをトリガに利用にする
例えば「ブランク」のスクリーンセーバーが起動してたら、
「scrnsave.scr」がプロセス一覧から取得できる(はず)
つまり*.scrが動いてたら確実にアイドル状態と判断できる
この方法はスクリーンセーバーを無効にしてたら意味ないけど、それはレジストリから判断できるはず
問題はアイドル+スクリーンセーバーの起動時間まで待つ必要がある事
2021/04/24(土) 00:09:09.60ID:gwk+qBm00
つ WM _ enteridle
2021/04/24(土) 00:13:28.13ID:RPGHdVOi0
タスクスケジューラでアイドル状態を条件にプログラムを起動できる
コードから直接利用する方法があるかどうかは知らない
2021/04/24(土) 01:30:28.39ID:+FP4d2caa
>>359
率直に言って無理がある気が。

結局システムで正式に定義されたステートじゃないと
今たまたま何か方法を見つけ出してもいつまでそれが使えるか
わかんないよね。

スリープを抑止するプログラムが起動しているかどうかで
判定できないかとも思ったけど、ブラウザの動画再生は
たぶんスリープ抑止しないよね知らんけど
2021/04/24(土) 01:42:09.65ID:lUFfLIkMd
SetThreadExecutionStateを試してみます

>>360
同じような機能入れてたけど設定し忘れ&解除し忘れで意味なかったです
2021/04/24(土) 11:26:55.87ID:gMqF1SGc0
GetLastInputInfo
2021/04/24(土) 13:52:13.80ID:gg+BSg3V0
>>361 でよさそう(未確認)
>>368 GetLastInputInfo は数ヶ月前10で試したけどうまくいかなかった
2021/04/24(土) 14:17:41.68ID:zhh/+6W6M
.NETで文字列の見た目の幅を求めるライブラリってある?
等幅フォント前提で半角英数なら1文字分、全角漢字なら2文字分、、、といったように計算したい
2021/04/24(土) 14:21:02.35ID:n+JXhE4b0
https://dobon.net/vb/dotnet/graphics/measurestring.html
これじゃだめなの?
2021/04/24(土) 14:34:56.09ID:CavyEmf6a
>>370
シフトJISでエンコードした時のバイト数を数えればいいと思うけど
今時そんなの何に使うの?
2021/04/24(土) 15:01:36.07ID:zhh/+6W6M
>>371
ありがとう
でもできればプラットフォーム依存しないほうがいい

>>372
Markdownのテーブルをフォーマットしたり色々です
2021/04/24(土) 15:03:28.91ID:6TA9BQj40
絵文字やサロゲートペアも考え出すとめちゃめちゃめんどくさいよね
2021/04/24(土) 15:27:27.20ID:h2P4AVL30
>>370
雑にやるなら、StringInfo.ParseCombiningCharacters2倍して、半角文字の文字数引いたら良いんじゃないの?
アクセント付き文字も半角文字に入れればそれなりに並ぶんでは?

タイ語とかアラビア語まで考える?
2021/04/24(土) 15:41:18.56ID:Of2cOFGz0
MeasureStringの数字を見ながら、頭がウニになったGDI+の思い出
勝手に文字の大きさ計算してくれるwpfの有り難さよ
2021/04/24(土) 16:14:48.80ID:RPGHdVOi0
>>370
wcwidthとかeast asian widthで検索してみるといいと思う
https://www.nuget.org/packages/EastAsianWidthDotNet
2021/04/24(土) 16:54:43.52ID:zhh/+6W6M
>>375
情報ども
とりあえず日本語対応できればいいかなと

>>377
あざす
これたぶん正解っぽいすね
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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