ふらっと C#,C♯,C#(初心者用) Part129 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2017/06/09(金) 18:36:01.72ID:lNiKtgPwM

「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。

他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。

内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。

なお、テンプレが読めない回答者は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください

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

■前スレ
ふらっと C#,C♯,C#(初心者用) Part128
http://mevius.2ch.net/test/read.cgi/tech/1493730340/

■関連スレ
C#, C♯, C#相談室 Part94 [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1492843013/

■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/

■情報源
https://msdn.microsoft.com/en-us/library/gg145045.aspx
http://referencesource.microsoft.com/
---
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
2017/06/09(金) 21:52:17.12ID:Mc8AIFQyH
あまり理想を追求せずにメモ帳程度のとりあえず動きますレベルの作るんだったら、
入門用に手頃な題材だと思うけどな
ただ、textboxの動作のカスタマイズとか考え出したら、途端にノウハウが必要に
なってくるし、さらに多くを求めると、自分でコントロール自作したほうがいいじゃ
ないかって話になってくる
2017/06/09(金) 22:05:28.35ID:raePFHAA0
>>6
田舎だと現物がなくて地味に大変なんですよね……
電子版のサンプルがあればまだいいんですが、どうにもいまひとつなものが多くて

>>7
ありがとうございます
実装など考えて「これは何から何まで初心者向きじゃないのでは?」と思ったので質問させていただきましたが、やはりみたいですね
ひとまずのところは素直に諦めておきます
作りたかったのはアウトラインプロセッサなので尚更困難そうですし……

>>10
感謝です
上述の通りひとまずは諦めますが、扱えるようになった日のためにメモさせていただきました
15デフォルトの名無しさん (ワッチョイ 0de3-K3wN)
垢版 |
2017/06/09(金) 22:50:12.15ID:3riuGxqe0
>>7
だよな、VB.NETで文字色と背景色が変えられる印刷プレビュー付きのメモ帳を
作ってみたけど結構大変だったわ。変な挙動が出ないようにきれいに仕上げるのが大変大変
将来的には秀丸並なエディタを考えていたが諦めた。バージョンアップもしてないし

>>8
それも大変だわな。作ってみようと思ってるんだけど全然やってないわ

>>13
そうそう、TextBoxの扱い大変だったわ。Win32APIのサイト読みまくった覚えがある
タブ幅を変えられるようにするにはWin32APIでいじらないとダメなんだよな
せめてタブ幅を変えられるようにしたいと思い勉強してやり方分かったのに結局やってないわ…

夏休みにでも挑戦してみるかな
2017/06/09(金) 22:52:24.97ID:7pQW/h0l0
作りたいと思うものを作ればいい
挫折するのも勉強のうち
2017/06/09(金) 23:10:41.46ID:hBMXxcIqM
GUIアプリ作成の習得の前にOOPの勉強からじゃないかな
2017/06/09(金) 23:18:42.25ID:deOaTYIP0
俺も最初にプログラミングに入門したときはVC#のGUI開発のチュートリアル的な本をやったけど
全くもって時間の無駄だったわ
その後で@ITのクソ長い川俣の文法解説を苦しみながら読んでやっと身についた
2017/06/10(土) 03:06:37.86ID:9CkaHZjz0
文法なんて何の苦労もしないだろ
2017/06/10(土) 03:23:40.05ID:1Hn0tUJS0
どういうときにその書き方をする/機能を使うべきか、が知りたいのよね
2017/06/10(土) 05:23:55.06ID:t5/pUE6C0
あー俺もやったわエディタ作成
何とか .NET 内で済まそうとやりくりしても結局 Win32api が必要になるという
2017/06/10(土) 17:31:02.75ID:BjmuQFWZr
C#の文法は解りやすいよね
C/C++からだったのもあってかとても楽だった
2017/06/10(土) 17:44:50.65ID:8hZhOGpOa
文法がわかるのと誤解なく使えるのは別物です
2017/06/10(土) 17:47:17.83ID:1OFjIP+40
>>23
誤解なく使えるようになってる状態をわかってるって言うんじゃねーの?
2017/06/10(土) 17:57:29.41ID:8hZhOGpOa
そういう文脈じゃないでしょ?
2017/06/10(土) 19:38:42.68ID:PzybJK5d0
WPFにそろそろ移行しなきゃと思いつつ全くできん
MVVMもようわからん
27デフォルトの名無しさん (アウアウカー Sae1-doPM)
垢版 |
2017/06/10(土) 20:20:15.41ID:rv8ogaG3a
フォームにテキストボックスどれくらいの数までパフォーマンス落ちないでいけるかわかる?
150個近く置きたいんだけど、ロードの時パラパラ漫画なるかな?
2017/06/10(土) 20:23:21.17ID:HebsjGPU0
設計を見直せ
2017/06/10(土) 20:23:28.55ID:MbS3wo5J0
>>27
それはさすがに自分の環境で試さないとだめだろ
背景の有無とかでも変わるし
30デフォルトの名無しさん (アウアウカー Sae1-doPM)
垢版 |
2017/06/10(土) 20:30:35.51ID:rv8ogaG3a
>>28
何使ったらいいと思います?datagridview?
>>29
それはもちろん確認しますけど、CPUやらメモリやらの環境依存もあったりするかな?と思って参考までに実績ある人がいたら聞いておきたかったです
2017/06/10(土) 20:35:28.02ID:s9o/w7+ta
>>30
結論から言うと無理だよ
クソ重くて動かない
絵にしといて編集するときだけテキストボックス出した
32デフォルトの名無しさん (アウアウカー Sae1-doPM)
垢版 |
2017/06/10(土) 20:45:06.73ID:rv8ogaG3a
>>31
ありがとうございます
やっぱりそうすかねー。んーどうしよう
2017/06/10(土) 21:04:20.90ID:vfV2Yx340
>>32
dategridviewじゃあかんのか?
2017/06/10(土) 21:19:08.32ID:M+kTqTcG0
>>27
分類できるならタブで分けるなりした方が楽じゃね
1画面で150項目入力とか表示以前にきつそうな
35デフォルトの名無しさん (アウアウカー Sae1-doPM)
垢版 |
2017/06/10(土) 21:22:26.64ID:rv8ogaG3a
>>33
ありがとうございます
datagridviewだとレイアウト上ちょっと厳しいんですよね。。
最悪テキストボックスとdatagridviewの組み合わせでいこうとは思ってますが
もしくはformをわけるかですかね。。
36デフォルトの名無しさん (アウアウカー Sae1-doPM)
垢版 |
2017/06/10(土) 21:24:13.48ID:rv8ogaG3a
>>34
ありがとうございます
一度に全部を確認したいのでタブだと駄目なんですよね
2017/06/10(土) 22:33:54.40ID:XdYy5zTm0
150個のテキストボックスなんて表示されてたとしても使う方がついてけないと思うけど。

31 が言ってるみたいにか、(ラベルか何かで)データを表示だけしといてクリックなりのタイミングで
テキストボックスをその位置に表示して編集可能にするとかが妥当だと思うなあ。やるなら。
本当に「一度に全部を確認したい」の? よくよく考えてみたらそんな必要なかったりしない?
2017/06/10(土) 23:03:03.55ID:Wb+MS3Tir
まあ、業務アプリだとありがちかもしれないねw
39デフォルトの名無しさん (アウアウエー Sa93-mlCz)
垢版 |
2017/06/10(土) 23:03:35.10ID:Lo444BJba
よー分からんが、入力の時は3ページくらいに分割しといて、確認は1ページみたいな感じが良いんじゃないか?
2017/06/10(土) 23:24:10.53ID:Io2vHiPPa
Excel15x10だと思うと全然大したことないのにな
41デフォルトの名無しさん (ワッチョイ 23ea-g/1O)
垢版 |
2017/06/10(土) 23:54:35.71ID:ZRXNskxD0
150個なんて全然軽いんじゃないの?
1500個なら重そうだけど
スクロール外にも及ぶなら、virtualViewみたいな設定ってWPFにないの?スクロール外のパーツをスクロールされたときに描写するViewみたいなの
2017/06/11(日) 00:07:06.98ID:J1z4hNf20
あるクラスの中でメソッドA〜Zまである中でメソッドA〜Cには同じ引数が渡されるので
これを別クラス化してコンストラクタに引数を渡してクラス変数を参照するように書き換えたらいいかなと思ったんですがどうなんでしょうか?
2017/06/11(日) 00:15:25.88ID:uDFgvSvSa
何を狙ってるの?
A-Cの引数がこれからも同じ保証なんかないじゃん
余計なことするなよ
2017/06/11(日) 01:40:30.93ID:zqgDUCjYa
>>42
「ので」は理由を表す助詞だけど、
一行目のどこがどう二行目の理由になっているのか理解できん
2017/06/11(日) 14:09:21.09ID:h7UNpT7Nr
>>41
150個くらいなら楽勝だと思うが、UIとしてどうなの?って感じたと思う。
2017/06/11(日) 14:11:29.27ID:h7UNpT7Nr
>>42
その場合、「同じ引数」に強い関連がある可能性が高いので、それに関する全てに関数を別クラスにするのは有だと思う。
2017/06/11(日) 14:14:21.51ID:blxFZxbL0
>>42
C#関係ないじゃんスレチだぞ
2017/06/11(日) 14:15:49.84ID:tNh5tYdla
>>45
だからExcelがやりたいんだろ
2017/06/11(日) 14:18:20.91ID:tNh5tYdla
>>42
後からBだけ引数1個増えましたってときに「コイツ(製作者)ばっかじゃねーの」って思う
2017/06/11(日) 15:10:20.00ID:LjgG7elm0
>>27
.NETじゃなくてAccessのフォームに150個近く(たぶん正確には135個)のテキストボックスを
配置して業務用の単票フォームを作ったことあるけど全然問題なく動いてたよ。表示も一瞬で表示されてた

テキストボックスにはデータセット紐づけのほかに計算式入れてたりユーザー定義関数を使ってたりで
色々データを表示してた
2017/06/11(日) 15:16:13.74ID:tNh5tYdla
>>50
それ別モンじゃん
そもそもAccessは割といい動作するし
2017/06/11(日) 15:17:08.87ID:xcBrsLWO0
>>50
.NETじゃないなら、あまり参考にならないのでは。
2017/06/11(日) 15:37:41.91ID:LjgG7elm0
>>51
Accessって動作いいほうなのか、知らなかったわ

>>52
Accessで大丈夫なら.NETも大丈夫そうだと思ったけど違うようだな
54デフォルトの名無しさん (アウアウカー Sae1-yWa+)
垢版 |
2017/06/11(日) 16:10:25.22ID:ZoOWYz/Pa
>>27です
レスくれた皆さんありがとうございました
自分の環境で確認したら80個くらいまではロード時違和感なく表示されましたが、150個ともなるとロード時に斜めに走るようにパラパラ表示されました
ロードしたその時だけなので別にいいかなという気もしてますがやはりアプリ自体が重たい印象を受けるのでちょっと見直してみます
2017/06/11(日) 16:24:09.83ID:4DbbNWthM
>>54
業務アプリでしょ?どうでもいいじゃん
もしパンピー向けのアプリだとしたら、パフォーマンス以前にそんなゴミ誰も使いたがらないよ
2017/06/11(日) 16:48:21.90ID:usK/W+VE0
>>50
.NETでも表示だけなら一瞬だな
http://ideone.com/OSS1xG
これにイベントとか入れたら知らんけど、そこまで試すの面倒
自分で作る時にこんなことやらないし
2017/06/11(日) 17:18:37.22ID:3RzQhoqha
managementstudioはたくさんフィールドがあるテーブル表示してもあんなに軽いのに
datagridviewとかテキストボックスとか超絶ゴミだからな
なんとかしろよな
58デフォルトの名無しさん (ワッチョイ 0ba2-yTT2)
垢版 |
2017/06/11(日) 17:39:41.98ID:mSEaOp/M0
こんな時XAMLさんならサクサクだったのかも
2017/06/11(日) 17:59:33.48ID:q49UmmFG0
>>57
> managementstudioはたくさんフィールドがあるテーブル表示してもあんなに軽いのに
テキストしか表示してないにしても確かにあれは驚異的に軽いな
100万件とか表示させても楽々表示してるし
2017/06/11(日) 20:07:45.10ID:h7UNpT7Nr
>>54
どんな作り方してるのか全く不明だけど、150個ロード?中に描画止めてないとか?
2017/06/11(日) 21:48:54.89ID:J1z4hNf20
自分的には1クラス長々記述するより、同じ引数の関連性が強いメソッドを別クラスで定義したほうが後々保守しやすいかなと思いまして
でもクラス増えることになってかえってグチャグチャになるかもしれませんね、もう少し綺麗にかけるといいんですけどね
2017/06/11(日) 22:00:02.90ID:3RzQhoqha
>>61
綺麗って誰にとって綺麗なん?
クラス図も無いのに設計書にも仕様書にも出てこないワードでクラス作られたら困るわ
第一拡張って拡張する方向性やらお客さんと相談した上でやっとるんか?
遊びちゃうで?

自分作んのは勝手やねんけどな
誰にとってわかりやすいか考えたことあるんか?
レビューとかあんまりしないで逃げてると下手っぴになってしまうで
2017/06/11(日) 22:04:06.20ID:bORb47TQa
>>61
根本的に何か勘違いしてるねw

君のやろうとしていることは、会社みたいな組織に例えたら
部署を名前のあいうえお順で分けるような話

何で人事部とか経理部とか営業部とか技術開発部とか
機能別に分割されているか考えたことある?
2017/06/11(日) 22:38:10.80ID:Y992bXXK0
ソース晒してスレ住民にリファクタリングしてもらうのが手っ取り早い
2017/06/11(日) 23:15:58.98ID:ldHAHhtB0
>>62
土方の回答は的外れだな
>>63
こっちのがマシ
2017/06/11(日) 23:51:07.00ID:h7UNpT7Nr
>>61
ドカタは横に置いておいてw

同じ引数云々は「結果」の問題
「責務」で考えた方が良いと思う
2017/06/12(月) 06:32:30.65ID:+fwK+2k2a
>>65
理由は?
68デフォルトの名無しさん (ワッチョイ 0ba2-yTT2)
垢版 |
2017/06/12(月) 06:43:36.79ID:nTXT2jNo0
プログラムの話じゃなくて業務の話だからじゃないかな

俺は>>61はそんな間違ってないと思うけど
基本的なクラス構造は保つべきだけど
頻繁に変更される箇所を別クラスに切り出したりするのは当たり前だと思う
柔軟に対応ってのがオブジェクト指向でしょ理由があるなら
2017/06/12(月) 07:06:54.56ID:8YsEkU6k0
>>68
どこが頻繁に変更されるか、その変更の単位はどうなるかはビジネスドメインに依存する
2017/06/12(月) 07:22:19.15ID:GxfLKN7ia
>>68
頻繁に変更される根拠は?
頻繁に変更のされ方がA-Zがα-γに代わる可能性はこの時点で排除していいの?
2017/06/12(月) 08:15:39.24ID:A8Wo+8nmM
具体的な要件もなしに
ぼくのさいきょうのせっけい
を語るスレ
2017/06/12(月) 08:50:40.43ID:chkTGcOaa
>>71
そうそれがないと動けない
でも積極的に将来的な保守を考えている!


らしい
2017/06/12(月) 09:58:45.32ID:7r+qmVbK0
単なる多態性の話なのに、質問者が初心者だから話が伝わらないだけにも見える
2017/06/12(月) 10:13:29.61ID:D/+2CfIyM
質問者は単に同じ処理があったらまとめるって書いてあるテキトーな入門書に騙されちゃったんだよ
2017/06/12(月) 19:35:49.82ID:lQGhR5lrM
C#って機能が多いけどどうやって覚えるんだ
2017/06/12(月) 19:44:09.17ID:rXd4wbiEH
英語話すのに、すべての英単語を覚える必要はない
使用頻度の高い単語は自然と覚えていくし
2017/06/12(月) 20:09:32.09ID:jTug809t0
ググってコピペ
2017/06/12(月) 23:51:34.57ID:WNBrqgLFa
>>75
ふつうに機能を網羅してる本を読んでった方がいい
ググってると抜ける
2017/06/12(月) 23:53:23.90ID:qV/n4oXY0
最近リストリストを使えるようになった俺に死角はない
2017/06/12(月) 23:55:29.49ID:WNBrqgLFa
***pか
2017/06/13(火) 00:07:21.37ID:B3SNwtco0
リストリストって、List<List<List<型>>>みたいな?
2017/06/13(火) 00:51:44.12ID:8KL1Ighu0
リストリストリストじゃん
2017/06/13(火) 06:05:27.06ID:ewun7OlT0
リストにクラスやリストをぶっこむ(add)する快感。
2017/06/13(火) 12:11:47.02ID:CRzmVHFt0
int[] tmp = Array.ConvertAll(Console.ReadLine().Split(' '), Int32.Parse);
int n = tmp[0];
int k = tmp[1];

エラー処理とかしなくていいとしたら、これをタプルとかで一度にする方法ってありますか?
2017/06/13(火) 12:17:17.70ID:E7DiHEZba
何言ってるのか分からない
これってどれよw
2017/06/13(火) 12:32:40.52ID:CRzmVHFt0
上記を一時変数を使わずに、一つの処理でできるでしょうか。
2017/06/13(火) 12:38:15.46ID:NvhjJXae6
var result = Console.ReadLine().Split(' ').Select(x=>int.Parse(x)).First(2).ToArray();

でおk
2017/06/13(火) 13:05:56.18ID:CRzmVHFt0
説明不足ですみません。nとkという名前は使いたいんです。
入力は、
n k
となっていて、C++だと
cin >> n >> k;みたいな。
scanfみたいにConsole.ReadLine("{0} {1}", a, b)とかはできないようだし。
2017/06/13(火) 13:20:37.48ID:eDsiBWTDM
>>84のでいいじゃん
なんで自分で理解できないコードを書こうとすんだよ
90デフォルトの名無しさん (スッップ Sd43-R3Dx)
垢版 |
2017/06/13(火) 13:26:34.53ID:j2Lm3DiZd
そういやラムダ式でタプルやったことないな
できるのかな
2017/06/13(火) 14:42:31.00ID:5ju7MduYa
すみません。ちょっと質問させて下さい
初めてタイマーコントロールを使ってみたんですが
private void TimerStart()
{
timer1.Interval = 1000;
timer1.Tick += new EventHandler(timer1_Tick);
timer1.Enabled = true;
}

private void timer1_Tick(object sender, EventArgs e)
{
Console.WriteLine("Timer Test");
}
上記を実行すると、1秒おきに「Timer Test」が2回ずつプリントされるんですが
なぜでしょうか。
2017/06/13(火) 14:49:22.12ID:9q19kSwz0
多分
//timer1.Tick += new EventHandler(timer1_Tick);
と、コメントアウトすれば解決
2017/06/13(火) 14:55:25.44ID:5ju7MduYa
>>92
ありがとうございます!
なるほど確かに。。きちんと動きました!
2017/06/13(火) 16:15:13.18ID:u75hJbewa
>>89
最近多いよね
こういうアホ
できるだけ複雑なコード入れて自分の居場所でも確保しようとしてんのかな?(笑)
2017/06/13(火) 17:07:42.77ID:yp0lpCGoa
>>94
アホはお前。そういうこと言わないの。

質問者はたぶん、ひょっとしてもっとスッキリ書ける方法があるけど
自分が知らないだけじゃないかと思っただけでしょ。

他ではやりづらいアホな質問でも気軽にできる2chの数少ない利点を
つぶすようなことしてどうする。
2017/06/13(火) 17:47:30.12ID:w2943itEa
>>95
それって逆に言うと今の自分レベルには読めないコードを書こうとしてるわけで
突き詰めて考えるとやっぱりバカなんだよ
いいじゃん
バカって言ってあげようよリアルだと
なかなか聞けないし
2017/06/13(火) 17:57:38.76ID:w2943itEa
さらに何がスッキリなんだろう?
現状のコードと改変後のコードを比較して
メリットデメリットを説明できるんだろか?
工数の短縮なのか?
わかりやすさなのか?
汎用性なのか?
他言語への移植のしやすさなのか?
実行速度なのか?
実行負荷なのか?

初心者スレだからこそ問い詰めたい
2017/06/13(火) 18:04:34.41ID:zMNW55ydM
まあまあwww

pythonでは
line="yamda,090-0000-0000"
name,phone=line.split(',')

でnameとphoneが代入できる
これを最初に見た時なんだか目からうろこが落ちた

便利っちゃ便利だわな
2017/06/13(火) 18:07:10.82ID:yp0lpCGoa
ダメだなこりゃw

なるほど知らないことを知ろうとすることが「自分レベルには読めないコードを書こうとしてる」
ことになるわけか。

こういうのを牽強付会って言うんだよね。
バカって言われるべきなのはお宅の方だと思うよw
2017/06/13(火) 18:20:38.27ID:w2943itEa
>>99
違うよ
目的がねーもん求めるなっつってんの
今回でいうと
スッキリってなーに?
って話かな
仮にスッキリ(?)書けたとして
それって何が良かったの?
って説明できるのか?
2017/06/13(火) 18:23:26.58ID:zMNW55ydM
c# の新しいタプルが導入されたとしてもさっきsplitされた配列から直接代入できない
拡張メソッドを自分で書くしかない
2017/06/13(火) 18:26:31.66ID:yfz+mfcVr
向上心の欠片もない人も多いからしょうがないよ。
2017/06/13(火) 18:28:02.99ID:zMNW55ydM
向上心とは関係ない
出来るかできないかの質問にはできませんで終わり

自分が知らない方法あるのかの質問で粘着されてかわいそうだなとは思う
2017/06/13(火) 18:34:58.46ID:yfz+mfcVr
public static (T n, T k) ToTuple(this T[] xs) => (xs[0], xs[1])

いまいちかなw
2017/06/13(火) 18:36:27.33ID:w2943itEa
>>104
ちなみに元のコードから何が良くなったの?
2017/06/13(火) 18:38:33.46ID:yfz+mfcVr
>>88
その考え方は割と的確で
式を意識してコードを書く
ととても「見通しのよいコード」になる

その辺を無意識に自覚出来てるんだと思う
2017/06/13(火) 18:40:01.60ID:yfz+mfcVr
>>105
理解出来ないならそれで良いじゃんw
無理する必要はさらさら無い
2017/06/13(火) 18:42:24.13ID:2H7RAtZfM
「一度に処理する方法」の有無を知りたがってるから>>104は可能だと提示した
質問と回答が通じてるからそれでいい
2017/06/13(火) 18:44:44.90ID:1lda3qQJM
>>106
いや>>84はいちおう宣言的なコードだぞ
副作用には依存してない
2017/06/13(火) 18:50:59.77ID:KW2Tb1Ft0
そもそも>>88は破壊的代入してる糞だろ
2017/06/13(火) 18:58:47.41ID:yfz+mfcVr
>>88の何処に破壊的代入があるんだろう??

まあReadLineで「out var a」みたいな書き方出来ないのは癪だが
2017/06/13(火) 19:00:04.17ID:zMNW55ydM
お前らは破壊的代入を気にする病気なのか?
2017/06/13(火) 19:29:42.17ID:w2943itEa
>>107
説明できないのは不味いけどね
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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