!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
探検
ふらっと C#,C♯,C#(初心者用) Part150
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 2b02-+i0H)
2021/03/23(火) 12:58:24.10ID:ACoFzk2L0334デフォルトの名無しさん (アウアウウー Sa1b-B9Cj)
2021/04/21(水) 11:04:40.00ID:9tzd621Ta >>327
そもそも問題設定が間違っていると思うよ。
正しい問題設定は「オブジェクト初期化子って何?」
オブジェクト初期化子とは、コンストラクタ呼び出しと、複数の任意のプロパティーやフィールドへの
値の設定をインラインで書けるようにした糖衣構文。
そもそも問題設定が間違っていると思うよ。
正しい問題設定は「オブジェクト初期化子って何?」
オブジェクト初期化子とは、コンストラクタ呼び出しと、複数の任意のプロパティーやフィールドへの
値の設定をインラインで書けるようにした糖衣構文。
335デフォルトの名無しさん (ワッチョイ d790-EWF6)
2021/04/21(水) 16:34:49.04ID:yCZSrEkI0336デフォルトの名無しさん (ワッチョイ d790-EWF6)
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なローカル変数に代入で、ローカル変数に適当な名前が思い付かないのでフィールド名と同じ名前で隠蔽
フィールドはメソッド内でnullチェックしても非nullableに昇格しない(kotlinでいうスマートキャストが効かない)
から、
if (field == null)
throw new IllegalState
var field = field!; // わざわざnon nullableなローカル変数に代入で、ローカル変数に適当な名前が思い付かないのでフィールド名と同じ名前で隠蔽
337デフォルトの名無しさん (ワッチョイ d790-EWF6)
2021/04/21(水) 17:04:17.58ID:yCZSrEkI0 メソッド内で1,2回とか参照しないのであればわざわざnon nullableなローカル変数に代入しないが
特にkotlinとかスコープ演算子とかもあるがkotlinは「!!」と二重だからこれがいっぱい現れるとソースが見苦しい...
特にkotlinとかスコープ演算子とかもあるがkotlinは「!!」と二重だからこれがいっぱい現れるとソースが見苦しい...
338デフォルトの名無しさん (ワッチョイ 1701-UBeK)
2021/04/21(水) 22:17:44.76ID:4gUtTQ4z0 >>333
違うだろ。C#ならフィールドとプロパティをきちんと区別しないといかん。
違うだろ。C#ならフィールドとプロパティをきちんと区別しないといかん。
339デフォルトの名無しさん (ブーイモ MMcf-eihA)
2021/04/22(木) 08:19:06.23ID:b0xCXWo1M x = a ?? b; ←null合体演算子
x.?method() ←これなんて言うんだっけ?
x.?method() ←これなんて言うんだっけ?
340デフォルトの名無しさん (ワッチョイ ff2c-xwMB)
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などは除外されるんでしょうかね。
openglを扱ってみたいのですが、c++とqtが多いんでしょうか?
c++を扱うと思うので、erectronやwxpythonなどは除外されるんでしょうかね。
342デフォルトの名無しさん (ラクッペペ MM8f-aCHF)
2021/04/22(木) 11:01:31.56ID:8IHXhPWQM >>341
C++の話をするのに何故C#のスレに来たの?
C++の話をするのに何故C#のスレに来たの?
343デフォルトの名無しさん (ワッチョイ bf62-rOyz)
2021/04/22(木) 11:15:40.26ID:wjS6T4Xy0 >>339
逆にnullだったらそのままにしたいってことが多いんだけどそういう演算子ないよね
int? x = null;
int? 2x = (x == null ) ? null : (2 * x);
みたいな
逆に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では動かないものですよね
c#は恐らくlinuxでは動かないものですよね
345デフォルトの名無しさん (ワッチョイ 9f01-7Des)
2021/04/22(木) 12:12:49.77ID:fYKo/KH70346デフォルトの名無しさん (ブーイモ MMbb-Vz79)
2021/04/22(木) 12:36:03.10ID:TgsR4gUfM >>344
人脈があれば出来るぞ
人脈があれば出来るぞ
347デフォルトの名無しさん (アウアウウー Sa1b-u2/C)
2021/04/22(木) 13:12:31.50ID:V2Z7bz83a >>344
Unityならwindowsでもlinuxでも動くはず
Unityならwindowsでもlinuxでも動くはず
348デフォルトの名無しさん (ワッチョイ ff33-ubdj)
2021/04/22(木) 13:26:29.41ID:r34CJZmP0 .NET MAUIがそういうの目指してるんだろうけれど…
349デフォルトの名無しさん (ワッチョイ d76e-vWSz)
2021/04/22(木) 14:05:53.62ID:XvsGXOnj0 >>347
unityをguiアプリ開発に使いませんよね 普通
unityをguiアプリ開発に使いませんよね 普通
350デフォルトの名無しさん (ワッチョイ 375f-QJa2)
2021/04/22(木) 14:23:56.91ID:wSGfQWAL0 >>349
mono 使えばいいんじゃないの?
mono 使えばいいんじゃないの?
351デフォルトの名無しさん (ワッチョイ bf62-rOyz)
2021/04/22(木) 15:04:02.14ID:wjS6T4Xy0352デフォルトの名無しさん (ワッチョイ d76e-vWSz)
2021/04/22(木) 15:44:38.28ID:XvsGXOnj0353デフォルトの名無しさん (ブーイモ MMbb-Vz79)
2021/04/22(木) 15:47:59.35ID:TgsR4gUfM .net core も動くぞ
354デフォルトの名無しさん (ワッチョイ 778e-u7Bp)
2021/04/22(木) 17:02:51.26ID:RDEPc8rd0 釣りだろ
355デフォルトの名無しさん (ワッチョイ ff63-7LQ7)
2021/04/22(木) 20:02:51.51ID:YBnx4+wd0 なんでも釣りって言わないで
356デフォルトの名無しさん (ワッチョイ 574f-ubdj)
2021/04/22(木) 21:59:40.16ID:8RSzlZOe0 なんでguiにunity勧める奴いるのw
357デフォルトの名無しさん (ワッチョイ ffda-wDCo)
2021/04/22(木) 22:01:36.51ID:itFZ12540 何にでもRuby勧める奴もいるだろ
358デフォルトの名無しさん (テテンテンテン MM8f-wT4Z)
2021/04/22(木) 22:05:49.71ID:JJ/RFZ5mM まあC#スレでC++連呼してるのは釣りか底抜けのバカのどちらかだからいずれにせよスルーが基本かと
359デフォルトの名無しさん (スププ Sd70-F6Jh)
2021/04/23(金) 21:53:03.64ID:e/IHU4YJd c#でPCがアイドル状態か否か判定したくて
マウスの動きが一定時間なしで判定するのは出来たんだけど
マウスを動かさずブラウザで動画再生しているときにもアイドル状態ではない判定にしたいんだけど
どうすれば判定取れるでしょうか
マウスの動きが一定時間なしで判定するのは出来たんだけど
マウスを動かさずブラウザで動画再生しているときにもアイドル状態ではない判定にしたいんだけど
どうすれば判定取れるでしょうか
360デフォルトの名無しさん (ワッチョイ bcb0-On6t)
2021/04/23(金) 22:15:06.79ID:2LOGdF5/0 特定のキー押下でアイドル判定されない状態を追加して置いた方が今後楽じゃないかな?
361デフォルトの名無しさん (ワッチョイ 8e2c-MVqC)
2021/04/23(金) 22:40:41.15ID:vlx7cXWJ0 メディアプレイヤーの類で動画再生は構わないの?
ブラウザのバックグランドタブで再生中の場合は?
一応各プロセス各スレッドがSetExecutionStateした結果のステートはこんな感じで取れるらしい
https://stackoverflow.com/questions/10970625/how-windows-decides-to-show-the-screensave
ブラウザのバックグランドタブで再生中の場合は?
一応各プロセス各スレッドがSetExecutionStateした結果のステートはこんな感じで取れるらしい
https://stackoverflow.com/questions/10970625/how-windows-decides-to-show-the-screensave
362デフォルトの名無しさん (ワッチョイ 8e2c-MVqC)
2021/04/23(金) 22:41:57.81ID:vlx7cXWJ0 SetThreadExecutionStateだった
363デフォルトの名無しさん (ワッチョイ 1c79-BShP)
2021/04/23(金) 23:45:20.80ID:tWGuVFO60 その他の案
スクリーンセーバーのプロセスをトリガに利用にする
例えば「ブランク」のスクリーンセーバーが起動してたら、
「scrnsave.scr」がプロセス一覧から取得できる(はず)
つまり*.scrが動いてたら確実にアイドル状態と判断できる
この方法はスクリーンセーバーを無効にしてたら意味ないけど、それはレジストリから判断できるはず
問題はアイドル+スクリーンセーバーの起動時間まで待つ必要がある事
スクリーンセーバーのプロセスをトリガに利用にする
例えば「ブランク」のスクリーンセーバーが起動してたら、
「scrnsave.scr」がプロセス一覧から取得できる(はず)
つまり*.scrが動いてたら確実にアイドル状態と判断できる
この方法はスクリーンセーバーを無効にしてたら意味ないけど、それはレジストリから判断できるはず
問題はアイドル+スクリーンセーバーの起動時間まで待つ必要がある事
364デフォルトの名無しさん (ワッチョイ 7cda-otCu)
2021/04/24(土) 00:09:09.60ID:gwk+qBm00 つ WM _ enteridle
365デフォルトの名無しさん (ワッチョイ 0c01-UN6T)
2021/04/24(土) 00:13:28.13ID:RPGHdVOi0 タスクスケジューラでアイドル状態を条件にプログラムを起動できる
コードから直接利用する方法があるかどうかは知らない
コードから直接利用する方法があるかどうかは知らない
366デフォルトの名無しさん (アウアウエー Sa6a-Nexr)
2021/04/24(土) 01:30:28.39ID:+FP4d2caa >>359
率直に言って無理がある気が。
結局システムで正式に定義されたステートじゃないと
今たまたま何か方法を見つけ出してもいつまでそれが使えるか
わかんないよね。
スリープを抑止するプログラムが起動しているかどうかで
判定できないかとも思ったけど、ブラウザの動画再生は
たぶんスリープ抑止しないよね知らんけど
率直に言って無理がある気が。
結局システムで正式に定義されたステートじゃないと
今たまたま何か方法を見つけ出してもいつまでそれが使えるか
わかんないよね。
スリープを抑止するプログラムが起動しているかどうかで
判定できないかとも思ったけど、ブラウザの動画再生は
たぶんスリープ抑止しないよね知らんけど
367デフォルトの名無しさん (スププ Sd70-F6Jh)
2021/04/24(土) 01:42:09.65ID:lUFfLIkMd368デフォルトの名無しさん (ワッチョイ ca35-B45E)
2021/04/24(土) 11:26:55.87ID:gMqF1SGc0 GetLastInputInfo
369デフォルトの名無しさん (ワッチョイ 1c79-BShP)
2021/04/24(土) 13:52:13.80ID:gg+BSg3V0370デフォルトの名無しさん (ブーイモ MM5e-zC44)
2021/04/24(土) 14:17:41.68ID:zhh/+6W6M .NETで文字列の見た目の幅を求めるライブラリってある?
等幅フォント前提で半角英数なら1文字分、全角漢字なら2文字分、、、といったように計算したい
等幅フォント前提で半角英数なら1文字分、全角漢字なら2文字分、、、といったように計算したい
371デフォルトの名無しさん (ワッチョイ a27c-ftt6)
2021/04/24(土) 14:21:02.35ID:n+JXhE4b0372デフォルトの名無しさん (アウアウウー Sa83-Im0W)
2021/04/24(土) 14:34:56.09ID:CavyEmf6a373デフォルトの名無しさん (ブーイモ MM5e-zC44)
2021/04/24(土) 15:01:36.07ID:zhh/+6W6M374デフォルトの名無しさん (ワッチョイ 66ad-JI0G)
2021/04/24(土) 15:03:28.91ID:6TA9BQj40 絵文字やサロゲートペアも考え出すとめちゃめちゃめんどくさいよね
375デフォルトの名無しさん (ワッチョイ f0ad-Wjwq)
2021/04/24(土) 15:27:27.20ID:h2P4AVL30 >>370
雑にやるなら、StringInfo.ParseCombiningCharacters2倍して、半角文字の文字数引いたら良いんじゃないの?
アクセント付き文字も半角文字に入れればそれなりに並ぶんでは?
タイ語とかアラビア語まで考える?
雑にやるなら、StringInfo.ParseCombiningCharacters2倍して、半角文字の文字数引いたら良いんじゃないの?
アクセント付き文字も半角文字に入れればそれなりに並ぶんでは?
タイ語とかアラビア語まで考える?
376デフォルトの名無しさん (ワッチョイ 0a42-On6t)
2021/04/24(土) 15:41:18.56ID:Of2cOFGz0 MeasureStringの数字を見ながら、頭がウニになったGDI+の思い出
勝手に文字の大きさ計算してくれるwpfの有り難さよ
勝手に文字の大きさ計算してくれるwpfの有り難さよ
377デフォルトの名無しさん (ワッチョイ 0c01-UN6T)
2021/04/24(土) 16:14:48.80ID:RPGHdVOi0378デフォルトの名無しさん (ブーイモ MM5e-zC44)
2021/04/24(土) 16:54:43.52ID:zhh/+6W6M379デフォルトの名無しさん (アウアウウー Sa83-Im0W)
2021/04/24(土) 17:00:48.70ID:TFlZREhta Markdownのテーブルっていうのが何かよく分からないけど、
細かいこと言えば等幅フォントであってもどの文字がどの幅で
描画されるかはフォントに依存するはずだと思うので、(一般的に半角の文字だと
されているものが半分の幅で描画される保証なんて実はないんじゃないか?)
グラフィック関係なら>>371みたいに実測するのが一番確実だよね
細かいこと言えば等幅フォントであってもどの文字がどの幅で
描画されるかはフォントに依存するはずだと思うので、(一般的に半角の文字だと
されているものが半分の幅で描画される保証なんて実はないんじゃないか?)
グラフィック関係なら>>371みたいに実測するのが一番確実だよね
380デフォルトの名無しさん (ワッチョイ e27d-2xWT)
2021/04/24(土) 18:10:11.92ID:EfI17DN20 同じ文字で同じ等幅フォントで表示しても、アプリによって全角/半角相違することもあるよ
MS製品間でもVisualStudio/Officeで幅が一致しなくて以前困った記憶がある
MS製品間でもVisualStudio/Officeで幅が一致しなくて以前困った記憶がある
381デフォルトの名無しさん (ワッチョイ 2a02-B0GO)
2021/04/24(土) 18:17:52.33ID:shUiIChg0 httpclientでpostした時にレスポンスヘッダーのlocationが取れないんだけど取る方法なかんかな
382デフォルトの名無しさん (ワッチョイ 8e2c-MVqC)
2021/04/24(土) 18:37:25.15ID:jBCuAF2S0 HttpClientをnewするときに渡すHttpClientHandler(.NET Core/5ならSocketsHttpHandler)の
AllowAutoRedirectをfalseにすればいけるような
AllowAutoRedirectをfalseにすればいけるような
383デフォルトの名無しさん (ワッチョイ 2a02-B0GO)
2021/04/25(日) 09:16:00.93ID:pCSAoCZZ0384デフォルトの名無しさん (アークセー Sxd7-On6t)
2021/04/25(日) 15:07:37.80ID:hcyifmDsx パネルに貼り付けているlabelの数を数えることってできませんか?
テキストファイルの1行目ならlabel1へ表示するってな感じにしたいのですが、
行数が少なければ↓でいいんですが、
label1.Text = File.ReadLines(FileName).Skip(0).Take(1).First();
数が多くなるとコードが長くなって修正等に時間がかかると思うんですよ。
そこでラベルの数が数えられるなら繰り返し文を使えばコードがスッキリするんじゃないかと思ったんです。
良い案のある方いらっしゃいましたらレスをお願いします。
テキストファイルの1行目ならlabel1へ表示するってな感じにしたいのですが、
行数が少なければ↓でいいんですが、
label1.Text = File.ReadLines(FileName).Skip(0).Take(1).First();
数が多くなるとコードが長くなって修正等に時間がかかると思うんですよ。
そこでラベルの数が数えられるなら繰り返し文を使えばコードがスッキリするんじゃないかと思ったんです。
良い案のある方いらっしゃいましたらレスをお願いします。
385デフォルトの名無しさん (ワッチョイ 8ea7-BCeV)
2021/04/25(日) 15:38:30.38ID:nePod60N0 >>384
controlsっているじゃん?
controlsっているじゃん?
386デフォルトの名無しさん (ワッチョイ 3f2d-T6Cp)
2021/04/25(日) 15:45:05.88ID:jBx2XbWF0 >>384
var count = this.panel1.Controls.Cast<Control>().Count( x => x is Label );
var count = this.panel1.Controls.Cast<Control>().Count( x => x is Label );
387デフォルトの名無しさん (ワッチョイ 412f-42zS)
2021/04/25(日) 16:09:10.43ID:FaKFDW610388デフォルトの名無しさん (ワッチョイ 3f2d-T6Cp)
2021/04/25(日) 16:11:55.60ID:jBx2XbWF0 >>387
思わずCastで書いちゃったけど、OfTypeの方がいいね
思わずCastで書いちゃったけど、OfTypeの方がいいね
389デフォルトの名無しさん (ワッチョイ 9b5f-On6t)
2021/04/25(日) 16:15:19.50ID:pX1h9NBm0 男だったらキャストして突っ張り続けろよ
390デフォルトの名無しさん (ワッチョイ 9378-On6t)
2021/04/25(日) 16:16:57.02ID:vWpG1hhV0391デフォルトの名無しさん (ワッチョイ 412f-42zS)
2021/04/25(日) 17:17:41.16ID:FaKFDW610 >>390
(デザイナーでの)登録順ってのは「保障」されているのか?って話なんだが
ディクショナリとか一見登録順に見えても、それは条件が良いだけか実装依存な場合がほとんどだぞ
まあデザイナの定義もVSでいじるとどう変わるかわからんけどな
(デザイナーでの)登録順ってのは「保障」されているのか?って話なんだが
ディクショナリとか一見登録順に見えても、それは条件が良いだけか実装依存な場合がほとんどだぞ
まあデザイナの定義もVSでいじるとどう変わるかわからんけどな
392デフォルトの名無しさん (ワッチョイ 3f2d-T6Cp)
2021/04/25(日) 17:43:19.45ID:jBx2XbWF0393デフォルトの名無しさん (ワントンキン MM42-XmRv)
2021/04/25(日) 17:57:58.07ID:NMiXqa1mM394デフォルトの名無しさん (アウアウウー Sa83-Im0W)
2021/04/25(日) 18:22:24.73ID:Jq50cbcAa >>384
なんかやりたいことと質問の内容が噛み合ってないような気がw
n番目のLabelにn行目の内容を表示したいんだったら
欲しいのはLabesの数じゃなくてIEnumerable<Label>とかじゃないの?
っていうかそういう目的ならLabelじゃなくてListViewとか使った方がいいんじゃないの?w
なんかやりたいことと質問の内容が噛み合ってないような気がw
n番目のLabelにn行目の内容を表示したいんだったら
欲しいのはLabesの数じゃなくてIEnumerable<Label>とかじゃないの?
っていうかそういう目的ならLabelじゃなくてListViewとか使った方がいいんじゃないの?w
395デフォルトの名無しさん (ワッチョイ 92da-eOAD)
2021/04/25(日) 18:45:17.32ID:6eSN7Ebq0 MVVMならもっと楽だったな
396デフォルトの名無しさん (アークセー Sxd7-On6t)
2021/04/25(日) 20:58:32.34ID:hcyifmDsx 皆様回答ありがとうございます。
Controlsプロパティに関しましては↓に
https://www.atmarkit.co.jp/fdotnet/dotnettips/224controls/controls.html
>PanelコントロールやGroupBoxコントロールなどを利用している場合には、フォームのControlsプロパティからすべてのコントロールにアクセスできるわけではない。
と書いていたのでスルーしていました。
>>394
まだ入門書を終わったばっかりでなにが正しいのかわかrない状態なので、変な感じなってるっぽいです。
ご指摘ありがとうございます。
とりあえずやりたいことはできたので、皆様本当にありがとうございました。
Controlsプロパティに関しましては↓に
https://www.atmarkit.co.jp/fdotnet/dotnettips/224controls/controls.html
>PanelコントロールやGroupBoxコントロールなどを利用している場合には、フォームのControlsプロパティからすべてのコントロールにアクセスできるわけではない。
と書いていたのでスルーしていました。
>>394
まだ入門書を終わったばっかりでなにが正しいのかわかrない状態なので、変な感じなってるっぽいです。
ご指摘ありがとうございます。
とりあえずやりたいことはできたので、皆様本当にありがとうございました。
397デフォルトの名無しさん (ワッチョイ 0662-miHF)
2021/04/26(月) 12:04:27.44ID:aoKZLvu10 >>396
一応釘を刺しておくけど、コントロール名を変えるだけで動かなくなるような実装にならないよう気をつけてね
一応釘を刺しておくけど、コントロール名を変えるだけで動かなくなるような実装にならないよう気をつけてね
398デフォルトの名無しさん (ワッチョイ fb54-C+b/)
2021/04/26(月) 15:48:20.09ID:57LVbzrx0399デフォルトの名無しさん (ワッチョイ 8ea7-BCeV)
2021/04/26(月) 17:00:40.17ID:fVZ2op5+0 Nameプロパティを見ない処理にすればよくね?
400デフォルトの名無しさん (ワッチョイ fb54-C+b/)
2021/04/26(月) 17:16:30.71ID:57LVbzrx0 >>399
現在、ToolStripのクリックされたボタンをNameで判別してます。
if(e.ClickedItem.Name == "") { }
この場合、Name以外のプロパティを使うようにするだけでいいでしょうか。
現在、ToolStripのクリックされたボタンをNameで判別してます。
if(e.ClickedItem.Name == "") { }
この場合、Name以外のプロパティを使うようにするだけでいいでしょうか。
401デフォルトの名無しさん (スッップ Sd70-miHF)
2021/04/26(月) 17:43:14.20ID:1JVi9H1ud >>400
Nameじゃなきゃいいわけじゃないよ
じゃあTextで″削除″だった時にって分岐をすると、後にダイアログを出すから″削除...″に修正しなきゃってなって動かなくなる
派生してカスタムコントロールを作るとかTagを利用するとかが一般的かな
Nameじゃなきゃいいわけじゃないよ
じゃあTextで″削除″だった時にって分岐をすると、後にダイアログを出すから″削除...″に修正しなきゃってなって動かなくなる
派生してカスタムコントロールを作るとかTagを利用するとかが一般的かな
402デフォルトの名無しさん (アウアウウー Sa83-Im0W)
2021/04/26(月) 17:43:28.37ID:+MtLiehda >>400
どのプロパティーを使おうが、そのコードを書いた時と違う値が設定されてしまったら
識別子として使えないのは同じじゃないの?w
素直に「クリックされたのは○○か?」を検査するコードを書けばいい。
if (e.ClickedItem == hogeButton) { ... }
そもそもボタン自身のイベントを使えば何がクリックされたか識別するコードを書く必要がない
どのプロパティーを使おうが、そのコードを書いた時と違う値が設定されてしまったら
識別子として使えないのは同じじゃないの?w
素直に「クリックされたのは○○か?」を検査するコードを書けばいい。
if (e.ClickedItem == hogeButton) { ... }
そもそもボタン自身のイベントを使えば何がクリックされたか識別するコードを書く必要がない
403400 (ワッチョイ fb54-C+b/)
2021/04/26(月) 18:57:38.53ID:fsnGR4b00 ありがとうございます。
>>402
以前、その方式でやっていたのですが、理由あってToolStripと、そのコンテナになるFormを別にした結果、以下のコードになってしまいました。
結果、FormからMenuItemを直接参照出来なくなりました。
https://ideone.com/dlhYMG
対策的に、別途、MenuItemの一覧のenumと、クリックされたItemを伝播するイベントを作りました。
https://ideone.com/da5kPY
ただし、この場合はMenuItemを追加する時に、enumに要素を追加する必要がありますが、
enumは定数なので、アプリ使用中にItem追加した際、enumにそのボタンを登録出来ないのです。
それで結局Nameを参照するようになりました・・・
>>402
以前、その方式でやっていたのですが、理由あってToolStripと、そのコンテナになるFormを別にした結果、以下のコードになってしまいました。
結果、FormからMenuItemを直接参照出来なくなりました。
https://ideone.com/dlhYMG
対策的に、別途、MenuItemの一覧のenumと、クリックされたItemを伝播するイベントを作りました。
https://ideone.com/da5kPY
ただし、この場合はMenuItemを追加する時に、enumに要素を追加する必要がありますが、
enumは定数なので、アプリ使用中にItem追加した際、enumにそのボタンを登録出来ないのです。
それで結局Nameを参照するようになりました・・・
404デフォルトの名無しさん (アウアウウー Sa83-Im0W)
2021/04/26(月) 19:20:00.87ID:+MtLiehda >>403
メンバー(fileMenuItem)のアクセスレベルを非privateにして晒すのが嫌なら
素直にイベントを作っちゃうのがいいんじゃないの?
public class MyToolStrip : ToolStrip
{
private ToolStripMenuItem fileMenuItem = new ToolStripMenuItem();
public event EventHandler FileMenuItemClick
{
add
{
fileMenuItem.Click += value;
}
remove
{
fileMenuItem.Click -= value;
}
}
}
メンバー(fileMenuItem)のアクセスレベルを非privateにして晒すのが嫌なら
素直にイベントを作っちゃうのがいいんじゃないの?
public class MyToolStrip : ToolStrip
{
private ToolStripMenuItem fileMenuItem = new ToolStripMenuItem();
public event EventHandler FileMenuItemClick
{
add
{
fileMenuItem.Click += value;
}
remove
{
fileMenuItem.Click -= value;
}
}
}
405デフォルトの名無しさん (ワッチョイ fb54-C+b/)
2021/04/26(月) 19:27:06.52ID:fsnGR4b00 >>404
それで行きます!ありがとうございます!
それで行きます!ありがとうございます!
406デフォルトの名無しさん (ワッチョイ 412f-42zS)
2021/04/26(月) 19:35:35.06ID:/WVOYzSd0 動的にオブジェクト追加してるならそのオブジェクトの参照は持ってるはずだから
Nameプロパティとか見る必要ないはずだが
Nameプロパティとか見る必要ないはずだが
407デフォルトの名無しさん (ワッチョイ 8ea7-BCeV)
2021/04/26(月) 19:50:40.13ID:fVZ2op5+0 言語の機能でインスタンスを特定しようとするのはギルティ
だいたい作っていくと痛い目にあう
だいたい作っていくと痛い目にあう
408デフォルトの名無しさん (アウアウウー Sa83-Im0W)
2021/04/26(月) 21:00:37.58ID:zRuX+7dna >>405
本来はToolStrip自身じゃなくて、ToolStripやMenuStripを持った
Formを継承した方がいいような気もするけどね。
まあそれじゃ満たせない要件なのかもしれないけど。
でもToolStripやMenuStripってFormの継承と相性悪いんだよな確か。
修正されずに放置されてるバグがてんこ盛りだった気がする
本来はToolStrip自身じゃなくて、ToolStripやMenuStripを持った
Formを継承した方がいいような気もするけどね。
まあそれじゃ満たせない要件なのかもしれないけど。
でもToolStripやMenuStripってFormの継承と相性悪いんだよな確か。
修正されずに放置されてるバグがてんこ盛りだった気がする
409デフォルトの名無しさん (アークセー Sxd7-On6t)
2021/04/26(月) 22:26:58.02ID:VGqr4loSx410デフォルトの名無しさん (ワッチョイ fb54-C+b/)
2021/04/26(月) 23:28:26.99ID:fsnGR4b00411デフォルトの名無しさん (アウアウウー Sa83-Im0W)
2021/04/27(火) 00:39:04.06ID:H7ElJCU2a >>410
「〇〇を変更した時には××も変更すべし」みたいな自明じゃないルールが存在すると、
そのルールをコードを保守する人が忘れているか知らない場合には
正常に動作しなくなるリスクが発生していることになる。
プログラミングの目的は要件を満たすことなので、他に手段がなければ
あえてそういうリスクのある方法を採用することはあってもいいけど、
今の話は明らかにそうじゃない
「〇〇を変更した時には××も変更すべし」みたいな自明じゃないルールが存在すると、
そのルールをコードを保守する人が忘れているか知らない場合には
正常に動作しなくなるリスクが発生していることになる。
プログラミングの目的は要件を満たすことなので、他に手段がなければ
あえてそういうリスクのある方法を採用することはあってもいいけど、
今の話は明らかにそうじゃない
412デフォルトの名無しさん (ワッチョイ 9b5f-f+Su)
2021/04/27(火) 00:47:33.70ID:8Unh/3dq0 Windows,LInux,Macで動作するものを作る場合は.Net coreとmonoどっちがおすすめですか?
413デフォルトの名無しさん (ラクッペペ MM34-/WW/)
2021/04/27(火) 00:58:04.31ID:ezafVa/dM 今からなら.NET 5 (.NET Coreの後継)
今年中には更に後継の.NET 6が登場予定
.NET Coreは既に終了済、monoはモバイル向け(.NET 6に統合される予定)
今年中には更に後継の.NET 6が登場予定
.NET Coreは既に終了済、monoはモバイル向け(.NET 6に統合される予定)
414デフォルトの名無しさん (ワッチョイ d0f2-2tiM)
2021/04/27(火) 01:08:57.42ID:8OBs4sir0 なんか次々思い付いてはゴミのように捨てていくよな
415デフォルトの名無しさん (ワッチョイ 9b5f-f+Su)
2021/04/27(火) 01:13:33.58ID:8Unh/3dq0 そうなんですね
.NET 5調べてみます!
.NET 5調べてみます!
416デフォルトの名無しさん (ワッチョイ f82d-T6Cp)
2021/04/27(火) 01:19:08.19ID:DUr8YxD70 .NET Core 3.1の次バージョンを.NET 5とリネームしただけだから.NET Coreが終わったわけじゃない
417デフォルトの名無しさん (ワッチョイ 66ad-JI0G)
2021/04/27(火) 08:59:07.35ID:nkW/cvkg0 >>413
既に終了済み??
既に終了済み??
418デフォルトの名無しさん (ワッチョイ b701-J6CO)
2021/04/27(火) 09:09:39.16ID:+C/fTs2P0 インターフェースや抽象クラスのメリットとは?
つまりvirtualで処理をかかない純粋仮想関数を作る意味はあるのかということです。
そもそもvirtual指定するのであればデフォルト処理というものを書いておけば必要に応じてオーバーライドすればよいと思うのですが。
つまりvirtualで処理をかかない純粋仮想関数を作る意味はあるのかということです。
そもそもvirtual指定するのであればデフォルト処理というものを書いておけば必要に応じてオーバーライドすればよいと思うのですが。
419デフォルトの名無しさん (ワッチョイ 1a63-3cD6)
2021/04/27(火) 09:56:11.35ID:zT7wmnFt0420デフォルトの名無しさん (ワッチョイ b701-J6CO)
2021/04/27(火) 10:13:30.82ID:+C/fTs2P0421デフォルトの名無しさん (ワッチョイ 8ea7-BCeV)
2021/04/27(火) 13:59:45.19ID:MoRpu0yA0 ちゃんとifやcase文で書いた方が実は後で楽だけどね
使うかどうかはかっちょええかどうかである場合が多い
使うかどうかはかっちょええかどうかである場合が多い
422デフォルトの名無しさん (ワッチョイ bcb0-On6t)
2021/04/27(火) 14:31:58.08ID:H51IIUOO0 将来的にスパゲティ化することを防ぐために多少手間でもインタフェースや抽象クラスを使って制約を設けるもんじゃないの?
423デフォルトの名無しさん (ワントンキン MMb8-XmRv)
2021/04/27(火) 15:29:38.21ID:5DBHgWrVM そういうのは大抵、いざ要件が増えたときには、今の引数だけでは〇〇の情報が足りないとか、拡張を想定していなかった部分を拡張しなければならなくなったとかで破綻するんだよ
要件にないなら後で実際に拡張が必要になってからリファクタリングした方がよい
要件にないなら後で実際に拡張が必要になってからリファクタリングした方がよい
424デフォルトの名無しさん (ワッチョイ bf87-dNqc)
2021/04/27(火) 16:06:23.66ID:NpDZDySr0 俺は>>422派だな。
要件が増えたときにパラメータが増えたとしても、ファクトリーに渡す拡張用の値増やすだけで元の処理に手を入れなくていいから
要件が増えたときにパラメータが増えたとしても、ファクトリーに渡す拡張用の値増やすだけで元の処理に手を入れなくていいから
425デフォルトの名無しさん (ワッチョイ b701-J6CO)
2021/04/27(火) 17:44:39.71ID:+C/fTs2P0 もしかして抽象クラスとインターフェースって使う必要ない?
メリットはスパゲティコードにしない制約を追加するだけで有れば設計ミスの方じゃないか?
メリットはスパゲティコードにしない制約を追加するだけで有れば設計ミスの方じゃないか?
426デフォルトの名無しさん (ワッチョイ 8ea7-BCeV)
2021/04/27(火) 17:54:44.27ID:MoRpu0yA0 >>425
まあでも知ってると他の誰かが使ったときに欠点がわかるよ
下地がそうやってできてるのにそれに逆らって作ってもしゃーないし
合わせるのは大事
ただメリットはよくわからん
List<object>やobject型の悪用とあんま変わらん気がする
落ちてもどこで落ちたかわからんのもいっしょ
まあでも知ってると他の誰かが使ったときに欠点がわかるよ
下地がそうやってできてるのにそれに逆らって作ってもしゃーないし
合わせるのは大事
ただメリットはよくわからん
List<object>やobject型の悪用とあんま変わらん気がする
落ちてもどこで落ちたかわからんのもいっしょ
427デフォルトの名無しさん (ブーイモ MM5e-ZDuA)
2021/04/27(火) 17:58:00.62ID:3vzUzKx8M >>425
同時平行開発するときは有用だな
同時平行開発するときは有用だな
428デフォルトの名無しさん (ワッチョイ a27c-On6t)
2021/04/27(火) 18:04:24.32ID:pi+NfSuo0 interfaceはこのクラスにはこのメソッドがありますよと言う事を約束するだけで
実装が共通化しようもないようなものに使うものだし
(例としてforeachで回せるようにする為のIEnumerable)
抽象クラスは良くある例はFruitクラスの子クラスがAppleやら関連性のあるものに対して使うものだろうし
そもそも用途が違うような
実装が共通化しようもないようなものに使うものだし
(例としてforeachで回せるようにする為のIEnumerable)
抽象クラスは良くある例はFruitクラスの子クラスがAppleやら関連性のあるものに対して使うものだろうし
そもそも用途が違うような
429デフォルトの名無しさん (アウアウエー Sa6a-hbXt)
2021/04/27(火) 18:05:20.92ID:eLMexJPua430デフォルトの名無しさん (アウアウエー Sa6a-hbXt)
2021/04/27(火) 18:06:48.09ID:eLMexJPua >>428
アルゴリズム書くときには便利かもね
アルゴリズム書くときには便利かもね
431デフォルトの名無しさん (スッップ Sd70-I7vP)
2021/04/27(火) 18:14:04.55ID:RVxlIcyJd クラスを他の人に使わせてまうとあとで変えれなくなってのっぴきならなくなることがあるからやがな。
interfaceにしておくことでサイズゼロにしておくことが出来る。
相手が不特定多数だと「変更したから変えてくれ」とはいえないわけですわ。
interfaceにしておくことでサイズゼロにしておくことが出来る。
相手が不特定多数だと「変更したから変えてくれ」とはいえないわけですわ。
432デフォルトの名無しさん (ワッチョイ bcb0-On6t)
2021/04/27(火) 18:16:27.98ID:H51IIUOO0 多態性を利用するために必須なんだから使わなきゃ不便じゃない?
純粋に楽になるついでに、構造に制約を設けて将来的に品質維持する保険にもなるっていう複数のメリットあるので、使わない理由が無いというか
一回つくって終わりの書き捨てならいらないけど
426の後半2行は意味がよくわからない
純粋に楽になるついでに、構造に制約を設けて将来的に品質維持する保険にもなるっていう複数のメリットあるので、使わない理由が無いというか
一回つくって終わりの書き捨てならいらないけど
426の後半2行は意味がよくわからない
433デフォルトの名無しさん (ワッチョイ d863-x7P5)
2021/04/27(火) 18:32:34.55ID:/yDoZvzG0 下手の考え休むに似たりって本当だよな
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【速報】10月の消費者物価3.0%上昇 [蚤の市★]
- 【無言】中国怒らせた高市首相→1週間だんまり、国民に実害も説明なし 中国問題を避けてスルー… ★6 [BFU★]
- 日中関係悪化で「日本からもうすぐパンダがいなくなる」 中国SNSでトレンド1位に [♪♪♪★]
- 【速報】10月の消費者物価3.0%上昇 ★2 [蚤の市★]
- 【コメ】価格「5キロ4316円」で最高値を更新…「おこめ券」が解決につながらない根本的な理由 コメ農家が危機感をあらわにする「離農」 [ぐれ★]
- 朝日新聞のタイトル修正が中国逆ギレの火種か SNSで批判相次ぐ★3 [♪♪♪★]
- 「間違いなくタカイチの頭の中には、サッチャーが試みたフォークランド成功体験が刻まれているはずだ」米国人が高市首相を分析 [487081228]
- 【悲報】中国「高市早苗が謝罪しない限り、もう日本はパンダを見ることはないだろう」 [812874503]
- 中国「ごめんなさい😭日本さん和解して」高市「は?舐めてんのか?😡」日本人「高市さんカッコいい😍」 [441660812]
- ネトウヨ「世界中の国々が中国との関係を切って日本に味方してくれるはず!!!」 これマジで何なんだよ… [314039747]
- 【悲報】「日本レコード大賞」、マジのガチで終わる [126042664]
- 高市早苗、会食せず議員宿舎に籠って勉強の毎日「飲んでる暇があれば、政策を練り、資料を読みたい」 [485187932]
