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

■ このスレッドは過去ログ倉庫に格納されています
2019/05/16(木) 19:28:06.27ID:s+6oZKe00
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)

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

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

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

■情報源
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/
-
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
2019/06/05(水) 13:10:56.81ID:lOa/gLJfr
> とあるゲーム
> 
> アプリを自動化したいと思ってる

味わい深いwwwwwwww
336デフォルトの名無しさん (ワッチョイ da2d-bUoT)
垢版 |
2019/06/05(水) 13:22:45.31ID:HUq/2QFD0
どうせアフィブログ転載用の質問でしょ
2019/06/05(水) 13:24:53.87ID:56z2teCB0
>>323
>アクティブな子windowにメッセージは送れるよ
>>324
>マルチフォームで、親のメニューから選んだ動作を、複数の子フォームがある中、
>アクティブなフォームに対してイベントを発生させることができるかって事なら
>WPF/UWPともに可能。

どうやるんでしょうか?
2019/06/05(水) 13:27:21.19ID:56z2teCB0
>>325
>MDI子のメニューは親のメニューにマージできたはずなので、
>そっちを使った方がよいんじゃないかなあ
なるほど。
ならば、編集メニューのコピー・ペーストなどの場合は、子ウィンドウ
それぞれが自前でメニューを持っていて、それを親にマージするんで
しょうか?
2019/06/05(水) 13:55:27.85ID:on5LrBrya
>>338
そうじゃないですか。

Formも派生させることができるしイベントハンドラもvirtualにできるので、
必ずしも馬鹿正直に全部のMDI子にTextが同じメニューアイテムを持たせる必要はないと思う。たぶん。
2019/06/05(水) 16:17:26.11ID:4nYErmG50
どうでもいいことだが、UWPは画面は常に一つってのが基本だから
アクティブなフォームにイベントで通知って概念が間違っている
2019/06/05(水) 16:32:23.33ID:DllhRP4m0
>>340
つ MasterDetail
342デフォルトの名無しさん (ワイエディ MM36-pVhm)
垢版 |
2019/06/05(水) 18:27:29.26ID:cGG6I1H4M
メソッド化してコードを見やすくすることについて質問させてください

僕にC#を教えてくれている人に「現状のコードだと見づらいから同じ処理はメソッド化して見やすくしなさい」と言われたのですが、
同じ処理をメソッド化すると、その処理内で使われていた変数が後ろのほうのコードでも使われてまして、
結局メソッド化した処理の中で使われている変数をまた宣言しないといけないハメになってしまっているのですが、どうすればいいのでしょうか?

プログラミング初心者なのと、文章が下手で凄くわからづらいかもしれませんが、どうかよろしくお願いします
2019/06/05(水) 18:34:52.52ID:QfSKspk80
いやまずその教えてくれる人に聞けばいいじゃん
2019/06/05(水) 18:49:27.84ID:Y52bWe2XM
>>342
引数で渡すのが王道
そうすることで読み手にメソッドの呼び出し順が固定できる
2019/06/05(水) 19:40:07.54ID:0jYbMqQia
>>342
メソッドとして切り出した箇所の後ろの方で使っていたという部分について、同じ名前の変数を宣言し直して新たな値(メソッド化した範囲で使っていた内容とは無関係)を設定し直しているということだとしたら、それで問題ないよ。
もともと独立した内容に同じ変数を使用していたというだけだから。
2019/06/05(水) 20:16:57.88ID:cGG6I1H4M
>>344
引数について再度よく調べてみます

>>345
ということはメソッド化しても再度変数を宣言し直さないといけないということですか?
それだとメソッド化する意味がないような……

質問に答えていただきありがとうございます
2019/06/05(水) 21:20:18.71ID:UHR6+GQga
>>346
変数の宣言をし直すことは何らデメリットではないぞ。
変数を使用するスコープを小さくしてその都度宣言できるようなら、むしろそうした方が良いくらいだよ。

具体的なコードを見てみないと何を問題視しているのか分からんが...
2019/06/05(水) 21:52:08.97ID:U9r1UeN50
エスパーすると
メソッド化してもメソッド側と呼び出し元に同じ変数宣言するけど良いの?
って感じか

引数やら戻り値で済みそうな話ではあるが

ローカル関数なんてのも使えるけどね
2019/06/05(水) 22:12:43.65ID:wGVmv/E80
グローバル変数的なものをやりたいんじゃないの?
例えば int i を宣言したら色々なメソッドのループ処理でそれを使いたいとか
2019/06/05(水) 22:34:27.36ID:Ut2vcZyxd
え…
2019/06/06(木) 03:57:36.08ID:icdwfxAZ0
>>346
変数のスコープ、有効範囲について勉強すると良いよ。
2019/06/06(木) 07:30:22.90ID:hsoM7R9V0
100以上の広域変数の状態を自由に扱えるようになったらそのプロジェクトは君が囲い込める
2019/06/06(木) 08:38:25.78ID:FUDF17OO0
>>352
レビューの時点でダメ出しくらうだけ
2019/06/06(木) 09:18:31.73ID:pf3DvXcp0
>>339
なんとなく分かってきました。
みなさん有難うございました。
355デフォルトの名無しさん (ワッチョイ 472d-DQMn)
垢版 |
2019/06/07(金) 02:17:34.41ID:82+Qy1ow0
DIコンテナに登録したオブジェクトをインスタンス化する際、コンストラクタに引数を渡すことってできないのですか?
ライブラリはMicrosoft.Extensions.DependencyInjectionを使用しています
2019/06/07(金) 02:33:56.03ID:kuDYI/kq0
できるよ
2019/06/07(金) 14:30:40.52ID:ZpgeSWQ/0
FormLoad時に、DataGridViewに何もDataSoureを割り当てていませんが
からの1行が表示されてしまっています。

これは、何が原因でしょうか?

画像とボタンの列があります。初めて使うのですが、これが原因でしょうか???
2019/06/07(金) 14:43:54.47ID:ZpgeSWQ/0
自己解決しました。
2019/06/07(金) 18:39:19.47ID:zRuFxC25M
私にはすべてが見えていました
2019/06/08(土) 09:09:33.88ID:ctcrb20I0
var list = new List<int>
list.Max();
のようなnullデータにリンクメソッドをチェーンするとエラーになりますが、nullデータの場合は無視するという記述は出来るでしょうか
2019/06/08(土) 09:12:48.20ID:rnAwjmmK0
>>360
>>110-114
2019/06/08(土) 09:30:34.63ID:ctcrb20I0
>>361
同スレで既出と気付きませんでした
参考になります
ありがとうございます
2019/06/08(土) 09:44:30.27ID:2mGSrtdCa
>>360
nullデータというよりも空リスト、空シーケンスなどと表現したほうがいいかな
Max()メソッドそのものが空リストの場合はInvalidOperationExceptionをthrowするんだけど
Nullable版のMax()を使えば空リストの場合はthrowするのでなくnullを返すようになる
var list = new List<int>();
int? elem = list.Cast<int?>().Max();
if (elem == null) { Console.WriteLine("空"); }
else { Console.WriteLine(elem.Value); }
2019/06/09(日) 23:07:07.34ID:xU4n/JWt0
ガッツリ動作が仕様に絡むとこまでお手軽に記述したがる感覚ってわからんな
2019/06/09(日) 23:21:14.22ID:1L6M6LAR0
#me too
2019/06/10(月) 02:33:24.81ID:c/9rL5aT0
独立性拡張性が失われちゃう
2019/06/10(月) 10:46:09.39ID:tveaGfmTp
なんだっけ、MVCモデルだっけ?
あんなん崇拝するから日本人の作るアプリは操作性最悪なんだけどね。
2019/06/10(月) 11:09:25.95ID:QmsKOsl+0
レッテル貼り乙
2019/06/10(月) 11:24:14.99ID:qkVPdWMn0
やっぱMVVMだよね
2019/06/10(月) 11:42:49.78ID:PIG+DB1Sd
設計モデルとユーザー操作性に因果関係あんの?
2019/06/10(月) 12:16:49.56ID:PMN6sAhZa
昔はよくウィザードが例に出されたけど、
設計が伴わないと実現が難しいUIというのは確かにあると思うよ
2019/06/10(月) 12:30:25.19ID:VMXLuCX0d
>>367
日本人はむしろMVCすら使えないやつが多いんじゃね?知らんけど
2019/06/10(月) 12:46:04.73ID:OnQgNCpHp
>>367
こういう設計思想もろくにしらん馬鹿がITにかかわるから操作性が無視されたアプリができるんだと思う
2019/06/10(月) 16:25:53.91ID:0NZRWrrl0
>>373
禿銅
2019/06/10(月) 18:16:01.01ID:j15NsR7HM
共通部分を増やせば増やすほど
コピペが難しくなって工数が増大していく
画面数300とか行くとさ
画面をまたいだ共通箇所って邪魔で邪魔で
しかたねーよ
2019/06/10(月) 19:30:29.84ID:0NZRWrrl0
抽象化しろや
2019/06/10(月) 19:41:59.07ID:MrgpB0NP0
>>376
一番邪魔なやつだそれ
実際の処理がソースで追えなくて
実行してブレークポイントで止めてステップ実行しないと
本当の処理がわからない欠陥品
ぶっ飛ばしてやりてぇ
2019/06/10(月) 19:43:24.33ID:+AzPxr5na
追わなくてよくなるんだよ
追うなテストしろ
2019/06/10(月) 19:46:43.72ID:MrgpB0NP0
>>378
意味わからん
コピペするのにどの処理持ってくりゃいいんだよ
こっちの処理は分岐なんかしねーんだよ
2019/06/10(月) 19:47:25.12ID:aFtuMg1K0
DataGridViewの中にボタン列を追加しました。
ぐぐってますが、DataGridView上のボタンを非活性に
する事はできないのでしょか?

Visual Studio2017を使用しています。
2019/06/10(月) 19:48:38.10ID:bMUfCd/90
だから手でテストしてんだろw

この涼しいのに沸いてるのw?
2019/06/10(月) 19:50:13.10ID:bMUfCd/90
>>380
https://docs.microsoft.com/ja-jp/dotnet/framework/winforms/controls/disable-buttons-in-a-button-column-in-the-datagrid
2019/06/10(月) 19:52:29.65ID:MrgpB0NP0
>>381
テストまでいってねっつのアホなん?
2019/06/10(月) 19:55:32.78ID:MrgpB0NP0
抽象化されたソースから追えないゴミカスコードをどうやってコピペしたらいいですか?

インターフェース同じやつ片っ端から貼りまくればいいですか?
36っこありますね
→ウンコですね New!
2019/06/10(月) 19:59:23.27ID:+AzPxr5na
コピペできないって悩むってことはやっぱり抽象化が正解なのか
いかに下っ端コーダーにコピペをさせないかがプロジェクト成功の鍵だからな
2019/06/10(月) 20:07:55.28ID:MrgpB0NP0
>>385
バカじゃん
まるごとコピペして名前だけ変えて放置だっつの
こんなキタネェコード付き合ってらんねーよ
1クラス1ファイルで書いてあるけどこんなゴミにこんなファイル数いらねーよ
Xxx.csに全部ツッコんでやった
まとめてゴミ箱だw
アンチパターン「マトリョーシカ」「たけのこの皮」「玉ねぎの皮」「マズイミルフィーユ」とか名付けたい
くだんねー薄皮クラス全部いんねっつーの
2019/06/10(月) 20:09:50.35ID:+AzPxr5na
>>386
はいリジェクト
ばいばい
2019/06/10(月) 20:37:44.89ID:MrgpB0NP0
逃げたか
2019/06/10(月) 22:36:29.43ID:aFtuMg1K0
>>382
そこまでしないと実装できないんですね。
Enabled=False
でできればよかったのですが、うーんどうしよう。
2019/06/10(月) 23:01:39.91ID:mjEnv2YNd
>>389
サンプルの
DataGridViewDisableButtonCell
をコピペで持ってきたらいいだけじゃん
2019/06/10(月) 23:28:43.62ID:MrgpB0NP0
でも正直なんでこんな面倒臭いの?ってぐらい作ったやつのセンスが悪いよね
2019/06/10(月) 23:40:05.50ID:ZWxvLRT60
C#は Visual Studio のサポート機能が無いと、コード書ける気しないわな。
2019/06/10(月) 23:57:56.14ID:aFtuMg1K0
>>390
それすら面倒だけどやってみます。

MSが普通にEnable実装しておけば、俺たちは True Falseの設定だけでできたのに。
2019/06/10(月) 23:58:17.24ID:s/X+Cj/I0
>>392
最近よくVisual Studio Codeで書いてるよ
2019/06/11(火) 00:20:18.49ID:eYjHCkmz0
>>393
お前が何を必要としてるかまでMSは知らないから仕方なくね
2019/06/11(火) 00:27:16.57ID:KO5Z5H7da
WinFormsのコントロール全般だけど、MSとしては>>390程度のことは
自前で継承して作り込んで使ってくれっていうスタンスだからなあ
(MSDNのドキュメントもそれ前提の書かれ方だし)
作りこむのが面倒であればGrapeCityとかが売ってる高機能なコンポーネントを使えばいいわけだし
2019/06/11(火) 00:29:30.86ID:VMcLTapW0
>>395
ちょっとでも使われ方の検討したのかよ
ってレベルじゃね?これ
2019/06/11(火) 01:03:45.60ID:8NPGWhvc0
>>395
そういう問題じゃなくて、ボタンにEnable False True入れるなんて常識だろ。
それ位実装しとけよ。くそMSって話。
2019/06/11(火) 01:12:02.27ID:fTJbh9kM0
>>398
こいつWebアプリ開発させられたら発狂しそう
400デフォルトの名無しさん (アウアウエー Sa93-dZrz)
垢版 |
2019/06/11(火) 01:38:08.73ID:ogrGMDt8a
今日のNGはこれか
VMcLTapW0
真っ赤にして待ってろ
2019/06/11(火) 01:45:34.19ID:VMcLTapW0
なんか普通のことが普通にできなくなって開発者からそっぽ向かれてない?

wpfなんかこんなののオンパレードだし俺ら工場のおっさん向けアプリ作ってるだけなんに
必要のない変な機能多すぎ
その割にこんな簡単な機能は未実装って
未完成ってレベルじゃないよね
2019/06/11(火) 01:48:32.42ID:p0Xp2yNy0
>>401
そんなに同意して欲しいなら同意してやるからもう寝なよ
2019/06/11(火) 01:51:14.95ID:VMcLTapW0
>>402
むしろお前こそ言いたいことがあるならハッキリ言うべき
無言でユーザだけ減ってる状態に苦労してると思うぞmsは
2019/06/11(火) 02:17:35.18ID:FGV57sZTd
>>403
言いたいことはお前が無能ってことだよ
2019/06/11(火) 02:19:21.88ID:AmszXiFy0
お前みたいな馬鹿が尻の穴嘗めてくれるからウハウハだぞバカ
2019/06/11(火) 02:28:30.43ID:VMcLTapW0
多分、日本はwindowsで作った資産があるけど
そうでない国はお金がないからわざわざWindowsを使わない
そんな状態が続いたもんだからlinuxの資産が貯まってしまって
お金を持っても今度はWindowsには移行できない
そんな事情のある最近のlinuxに寄り添ってる理由だろ
昔はその作りやすさから王者だったけど
最近そーでもねーのが致命的になってんじゃねーのか?と
2019/06/11(火) 02:33:30.92ID:mh1wU8omM
クソ長文書いてねえで寝ろクズ
2019/06/11(火) 03:14:41.06ID:aZcuYhl50
HTML のボタンには、disabled 属性もある
2019/06/11(火) 07:09:30.30ID:nARElikq0
もうwebオンリーで行くかなと思ったけどバーコード使いたいと言われるとFormeアプリ使わんとダメだよね
XAMLは流行る予感がしないから触る事ないな
2019/06/11(火) 08:52:13.44ID:eYjHCkmz0
Webでバーコード扱えるけど
2019/06/11(火) 10:34:45.11ID:q+xysia0d
Shape Detection APIな。
PCのChromeでも動けば動作検証楽なのになぁ、あれ。
2019/06/11(火) 14:05:54.20ID:6dm7scj8M
リーダーをUSBに差せばWebでも使えるやで
2019/06/11(火) 14:08:24.54ID:8NPGWhvc0
ふぅーDataGridViewのボタンの非活性できた。

MSはその程度実装しておけよ
2019/06/11(火) 14:27:25.63ID:irqLdUAC0
CheckBox も同様だけど、Visible と Enable くらいは実装しとけよ、って思うよなぁ
WinForms に対しては全くやる気ないみたいだけど
2019/06/11(火) 14:41:17.27ID:8NPGWhvc0
>>414
実装もそこまで時間かかるとは思えないんだよな
なんか詰めが甘いというか・・・

しかもVS2017になっても未実装って
2019/06/11(火) 15:25:57.49ID:irqLdUAC0
x64 のときは Form_Load の中での例外はスルーするバグも絶賛放置
(x86 だったら、ちゃんと例外を捕捉する)
2019/06/11(火) 15:57:17.26ID:dpi3ASg30
Windows Formなんてとっくに見捨てられてるからね。メンテナンスフェーズかも知れん。WPFですら10年前だし。ということでUPF使え。
…ってMSは思ってるかもだが、Formなにかと楽なんだよなあ
2019/06/11(火) 16:23:20.80ID:8NPGWhvc0
俺がゲイツなら首にするわ
2019/06/11(火) 18:42:14.00ID:a3rgTFI7d
.NET Core3.0リリース後にちゃちゃっとPR書けば?そんなに簡単なら
2019/06/11(火) 20:32:19.05ID:3Y+SR7BCM
悪いけど、FullFx版のWinFormsとの互換性を損なうようなコミットは全部リジェクトだと思うよ
forkして弄るのは勝手だけど
2019/06/11(火) 20:58:05.88ID:fTJbh9kM0
>>420
.NET Core3.0後にどうなるかはまだ不透明
現状はそうだけどね
2019/06/11(火) 21:10:59.72ID:HH9jnqHSa
どのみちMS自身が今後WinFormsに機能追加をすることはありえないんだから、縛りのきつい公式リポジトリに拘る意味がないでしょ
WinFormsをクロスプラットフォーム化するコミュニティプロジェクトは必ず立ち上がるから、それに参加したらいい
2019/06/11(火) 21:15:40.32ID:GAHoXfWar
>>422
WinFormsのクソな部分がそのまま移植されるとは思わないから別物になると思う

汎用的な部分だけ移植なら整合性が合わなくなるからそもそも新しいの作るだろ
2019/06/11(火) 21:40:49.66ID:HH9jnqHSa
>>423
残念ながらベタ移植だよ
ほとんどのソースはオリジナルからコピーしてきてヘッダコメントを変えただけ
WinFormsをCoreでビルドできるように手直ししただけの代物だ
WPFなんかC++/CLIにべったり依存してるからもっと酷くて、
WPFをビルドするためだけにVCのコンパイラに限定的なCoreサポートを追加して無理矢理ビルドしてる
そんな不毛なことするくらいならネイティブ部分を書き直せと批判されてしばしばissueが炎上してるが、MSはガン無視
2019/06/12(水) 09:44:54.85ID:jI3pneRO0
DataGridView_hoge.AllowUserToResizeColumns = false;

列幅変更出来ない様にしたつもりですが、普通にドラッグしてサイズ変更出来てしまいます。
何が原因でしょうか???
2019/06/12(水) 10:24:07.46ID:0xThtXZC0
行ヘッダ列はAllowUserToResizeColumnsじゃなくてRowHeadersWidthSizeModeで設定しないといけないけど
それ以外の列ってことなら何か変なことやってるんじゃないのとしか言えないなぁ
2019/06/12(水) 10:29:24.57ID:jI3pneRO0
>>426
RowHeadersWidthSizeMode
ためしてみます。
2019/06/12(水) 21:10:32.82ID:MR/XkF+FM
なんかWindowsアップデートで動かなくなったりするから
Windowsやめようぜって方向になってるぞ
2019/06/12(水) 21:27:03.90ID:1sqooHn/0
どうぞ
2019/06/12(水) 23:03:21.43ID:AKIxT99i0
どうぞどうぞ
2019/06/12(水) 23:30:47.47ID:uj0EyW6pd
バイバーイ(^.^)/~~~
2019/06/13(木) 12:45:58.94ID:jjdzM/JQd
WPFの将来性ってどうですか?
今から勉強する価値ありますかね
2019/06/13(木) 15:02:14.86ID:5cAqIW1CM
>>432
将来性はない
勉強する価値もない
2019/06/13(木) 17:22:47.41ID:7q1+HOWFa
たぶん現状のまま放置されるって意味では将来性ないけど
Silverlightみたいに事実上使えなくなることは恐らくないから
勉強して無駄になることもないと思うよ

そいうや、何年か前にWin32を廃止する計画を読んだ記憶があるけど
例によって軌道に乗ってるように思えんねw
2019/06/13(木) 18:14:02.25ID:EM2pYCLsp
>>434
win32廃止したら、Windowsじゃ無くなるじゃん
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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