ふらっと C#,C♯,C#(初心者用) Part129 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
「どんなにくだらない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 質問しようとしたらちょうど新スレのようで、>>1さんお疲れさまです。
そしてもしスレ違いならすみません。
それなりにプログラミングの経験はあると思うのですが積極的に GUI のアプリケーションを作成したことがなかったため、Visual C# を学ぼうと考えました。
選択理由は C# はそれなりに把握して他の言語と比較しても好みだったためと、Qt などよりも使い勝手がよさそうに見えたためです。
ところが実際にはじめてみると細かい機能がよく分からず、MSDN のドキュメントは体系立てて学習するには少し使いにくすぎ、
書籍なども「C# そのものの内容についてがメインで求めている内容はおまけ程度」というものがほとんどで、取っかかりを得られずに困っています。
もし定番の学習法や便利な書籍・サイトなどがありましたらご教示願えませんでしょうか?
あるいは皆さんがどんな風に学ばれたのかなど参考までに教えていただければ……。
またひとつ確認なのですが、普通のメモ帳より高性能なテキストエディタを作成したいとするのならばコンポーネントを自作しなければいけないという認識であっているでしょうか?
MSDN の関連項目を見てもいまいち理解できないのですが、もしかしてこれはかなり難度高めでしょうか?
無知で申し訳ありませんがよろしくお願いします。 >>1
立て乙
>>2
内容は古いけどまとまっているところ
http://www.atmarkit.co.jp/ait/subtop/features/dotnet/dotnettips_index.html
https://dobon.net/vb/dotnet/
というか困ったらその内容でググれ
>テキストエディタを作成したいとするのならばコンポーネントを自作しなければいけない
何をしたいかわからないから答えようがないが、とりあえずRichTextBoxで作っていけば? >>3
ありがとうございます。
後者は恥ずかしながらVB.netについてのページと思いこんで飛ばしていました……。
テキストエディタについては、リッチテキストは未確認ですが、
標準のものは字間・行間の調整など、メモ帳にはないけど普通のテキストエディタならあるような設定が無理そうでしたので。 たのしいC#って本でプログラミング勉強した人いますか?
レベルはどれくらいですか 入門書は書店で中味見て
形があるアプリ作ってるのがいいよ
作ってるアプリが自分の興味ないものだったら買うのをやめたほうがいいかも >>2
一応突っ込んでおくけど、エディタ作りたいって初心者にありがちだけど、
エディタって初心者が想像するほど簡単じゃないからやめといた方がいいと思うよ
少なくとも外観のシンプルさに騙されて実装の大変さが想像つかないレベルのうちは
絶対に挫折するw テキストコントロール自体を改良するか自分でいちから作り上げるか
どっちにしても初心者には鬼門過ぎる
似たような問題で
電卓作ってcalcと同じ動作で作れる奴
なんか新卒でいても1人だな >>6
実はもう買ってるんだけど、自分で理解出来てるのか、出来てないのか分からなくて困ってる‥
こういう微妙な立ち位置なんだよね
まあ理解できてると思うけど
他の言語は分かるけど AvalonEditって代物が有って、コレを使えば簡単にエディター作れるには作れるんだがwpfなんだよな
http://avalonedit.net/ >>10
仮にForms版があったとしても、プログラミングの勉強にはならないだろ。 >>10
こういうデカい部品を相手にするのは初心者の勉強には最悪
まったく応用の利かないバッドノウハウに時間取られるだけ あまり理想を追求せずにメモ帳程度のとりあえず動きますレベルの作るんだったら、
入門用に手頃な題材だと思うけどな
ただ、textboxの動作のカスタマイズとか考え出したら、途端にノウハウが必要に
なってくるし、さらに多くを求めると、自分でコントロール自作したほうがいいじゃ
ないかって話になってくる >>6
田舎だと現物がなくて地味に大変なんですよね……
電子版のサンプルがあればまだいいんですが、どうにもいまひとつなものが多くて
>>7
ありがとうございます
実装など考えて「これは何から何まで初心者向きじゃないのでは?」と思ったので質問させていただきましたが、やはりみたいですね
ひとまずのところは素直に諦めておきます
作りたかったのはアウトラインプロセッサなので尚更困難そうですし……
>>10
感謝です
上述の通りひとまずは諦めますが、扱えるようになった日のためにメモさせていただきました >>7
だよな、VB.NETで文字色と背景色が変えられる印刷プレビュー付きのメモ帳を
作ってみたけど結構大変だったわ。変な挙動が出ないようにきれいに仕上げるのが大変大変
将来的には秀丸並なエディタを考えていたが諦めた。バージョンアップもしてないし
>>8
それも大変だわな。作ってみようと思ってるんだけど全然やってないわ
>>13
そうそう、TextBoxの扱い大変だったわ。Win32APIのサイト読みまくった覚えがある
タブ幅を変えられるようにするにはWin32APIでいじらないとダメなんだよな
せめてタブ幅を変えられるようにしたいと思い勉強してやり方分かったのに結局やってないわ…
夏休みにでも挑戦してみるかな 作りたいと思うものを作ればいい
挫折するのも勉強のうち GUIアプリ作成の習得の前にOOPの勉強からじゃないかな 俺も最初にプログラミングに入門したときはVC#のGUI開発のチュートリアル的な本をやったけど
全くもって時間の無駄だったわ
その後で@ITのクソ長い川俣の文法解説を苦しみながら読んでやっと身についた どういうときにその書き方をする/機能を使うべきか、が知りたいのよね あー俺もやったわエディタ作成
何とか .NET 内で済まそうとやりくりしても結局 Win32api が必要になるという C#の文法は解りやすいよね
C/C++からだったのもあってかとても楽だった >>23
誤解なく使えるようになってる状態をわかってるって言うんじゃねーの? WPFにそろそろ移行しなきゃと思いつつ全くできん
MVVMもようわからん フォームにテキストボックスどれくらいの数までパフォーマンス落ちないでいけるかわかる?
150個近く置きたいんだけど、ロードの時パラパラ漫画なるかな? >>27
それはさすがに自分の環境で試さないとだめだろ
背景の有無とかでも変わるし >>28
何使ったらいいと思います?datagridview?
>>29
それはもちろん確認しますけど、CPUやらメモリやらの環境依存もあったりするかな?と思って参考までに実績ある人がいたら聞いておきたかったです >>30
結論から言うと無理だよ
クソ重くて動かない
絵にしといて編集するときだけテキストボックス出した >>31
ありがとうございます
やっぱりそうすかねー。んーどうしよう >>32
dategridviewじゃあかんのか? >>27
分類できるならタブで分けるなりした方が楽じゃね
1画面で150項目入力とか表示以前にきつそうな >>33
ありがとうございます
datagridviewだとレイアウト上ちょっと厳しいんですよね。。
最悪テキストボックスとdatagridviewの組み合わせでいこうとは思ってますが
もしくはformをわけるかですかね。。 >>34
ありがとうございます
一度に全部を確認したいのでタブだと駄目なんですよね 150個のテキストボックスなんて表示されてたとしても使う方がついてけないと思うけど。
31 が言ってるみたいにか、(ラベルか何かで)データを表示だけしといてクリックなりのタイミングで
テキストボックスをその位置に表示して編集可能にするとかが妥当だと思うなあ。やるなら。
本当に「一度に全部を確認したい」の? よくよく考えてみたらそんな必要なかったりしない? よー分からんが、入力の時は3ページくらいに分割しといて、確認は1ページみたいな感じが良いんじゃないか? Excel15x10だと思うと全然大したことないのにな 150個なんて全然軽いんじゃないの?
1500個なら重そうだけど
スクロール外にも及ぶなら、virtualViewみたいな設定ってWPFにないの?スクロール外のパーツをスクロールされたときに描写するViewみたいなの あるクラスの中でメソッドA〜Zまである中でメソッドA〜Cには同じ引数が渡されるので
これを別クラス化してコンストラクタに引数を渡してクラス変数を参照するように書き換えたらいいかなと思ったんですがどうなんでしょうか? 何を狙ってるの?
A-Cの引数がこれからも同じ保証なんかないじゃん
余計なことするなよ >>42
「ので」は理由を表す助詞だけど、
一行目のどこがどう二行目の理由になっているのか理解できん >>41
150個くらいなら楽勝だと思うが、UIとしてどうなの?って感じたと思う。 >>42
その場合、「同じ引数」に強い関連がある可能性が高いので、それに関する全てに関数を別クラスにするのは有だと思う。 >>42
後からBだけ引数1個増えましたってときに「コイツ(製作者)ばっかじゃねーの」って思う >>27
.NETじゃなくてAccessのフォームに150個近く(たぶん正確には135個)のテキストボックスを
配置して業務用の単票フォームを作ったことあるけど全然問題なく動いてたよ。表示も一瞬で表示されてた
テキストボックスにはデータセット紐づけのほかに計算式入れてたりユーザー定義関数を使ってたりで
色々データを表示してた >>50
それ別モンじゃん
そもそもAccessは割といい動作するし >>50
.NETじゃないなら、あまり参考にならないのでは。 >>51
Accessって動作いいほうなのか、知らなかったわ
>>52
Accessで大丈夫なら.NETも大丈夫そうだと思ったけど違うようだな >>27です
レスくれた皆さんありがとうございました
自分の環境で確認したら80個くらいまではロード時違和感なく表示されましたが、150個ともなるとロード時に斜めに走るようにパラパラ表示されました
ロードしたその時だけなので別にいいかなという気もしてますがやはりアプリ自体が重たい印象を受けるのでちょっと見直してみます >>54
業務アプリでしょ?どうでもいいじゃん
もしパンピー向けのアプリだとしたら、パフォーマンス以前にそんなゴミ誰も使いたがらないよ >>50
.NETでも表示だけなら一瞬だな
http://ideone.com/OSS1xG
これにイベントとか入れたら知らんけど、そこまで試すの面倒
自分で作る時にこんなことやらないし managementstudioはたくさんフィールドがあるテーブル表示してもあんなに軽いのに
datagridviewとかテキストボックスとか超絶ゴミだからな
なんとかしろよな >>57
> managementstudioはたくさんフィールドがあるテーブル表示してもあんなに軽いのに
テキストしか表示してないにしても確かにあれは驚異的に軽いな
100万件とか表示させても楽々表示してるし >>54
どんな作り方してるのか全く不明だけど、150個ロード?中に描画止めてないとか? 自分的には1クラス長々記述するより、同じ引数の関連性が強いメソッドを別クラスで定義したほうが後々保守しやすいかなと思いまして
でもクラス増えることになってかえってグチャグチャになるかもしれませんね、もう少し綺麗にかけるといいんですけどね >>61
綺麗って誰にとって綺麗なん?
クラス図も無いのに設計書にも仕様書にも出てこないワードでクラス作られたら困るわ
第一拡張って拡張する方向性やらお客さんと相談した上でやっとるんか?
遊びちゃうで?
自分作んのは勝手やねんけどな
誰にとってわかりやすいか考えたことあるんか?
レビューとかあんまりしないで逃げてると下手っぴになってしまうで >>61
根本的に何か勘違いしてるねw
君のやろうとしていることは、会社みたいな組織に例えたら
部署を名前のあいうえお順で分けるような話
何で人事部とか経理部とか営業部とか技術開発部とか
機能別に分割されているか考えたことある? ソース晒してスレ住民にリファクタリングしてもらうのが手っ取り早い >>62
土方の回答は的外れだな
>>63
こっちのがマシ >>61
ドカタは横に置いておいてw
同じ引数云々は「結果」の問題
「責務」で考えた方が良いと思う プログラムの話じゃなくて業務の話だからじゃないかな
俺は>>61はそんな間違ってないと思うけど
基本的なクラス構造は保つべきだけど
頻繁に変更される箇所を別クラスに切り出したりするのは当たり前だと思う
柔軟に対応ってのがオブジェクト指向でしょ理由があるなら >>68
どこが頻繁に変更されるか、その変更の単位はどうなるかはビジネスドメインに依存する >>68
頻繁に変更される根拠は?
頻繁に変更のされ方がA-Zがα-γに代わる可能性はこの時点で排除していいの? 具体的な要件もなしに
ぼくのさいきょうのせっけい
を語るスレ >>71
そうそれがないと動けない
でも積極的に将来的な保守を考えている!
らしい 単なる多態性の話なのに、質問者が初心者だから話が伝わらないだけにも見える 質問者は単に同じ処理があったらまとめるって書いてあるテキトーな入門書に騙されちゃったんだよ 英語話すのに、すべての英単語を覚える必要はない
使用頻度の高い単語は自然と覚えていくし >>75
ふつうに機能を網羅してる本を読んでった方がいい
ググってると抜ける 最近リストリストを使えるようになった俺に死角はない リストリストって、List<List<List<型>>>みたいな? リストにクラスやリストをぶっこむ(add)する快感。 int[] tmp = Array.ConvertAll(Console.ReadLine().Split(' '), Int32.Parse);
int n = tmp[0];
int k = tmp[1];
エラー処理とかしなくていいとしたら、これをタプルとかで一度にする方法ってありますか? 上記を一時変数を使わずに、一つの処理でできるでしょうか。 var result = Console.ReadLine().Split(' ').Select(x=>int.Parse(x)).First(2).ToArray();
でおk 説明不足ですみません。nとkという名前は使いたいんです。
入力は、
n k
となっていて、C++だと
cin >> n >> k;みたいな。
scanfみたいにConsole.ReadLine("{0} {1}", a, b)とかはできないようだし。 >>84のでいいじゃん
なんで自分で理解できないコードを書こうとすんだよ そういやラムダ式でタプルやったことないな
できるのかな すみません。ちょっと質問させて下さい
初めてタイマーコントロールを使ってみたんですが
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回ずつプリントされるんですが
なぜでしょうか。 多分
//timer1.Tick += new EventHandler(timer1_Tick);
と、コメントアウトすれば解決 >>92
ありがとうございます!
なるほど確かに。。きちんと動きました! >>89
最近多いよね
こういうアホ
できるだけ複雑なコード入れて自分の居場所でも確保しようとしてんのかな?(笑) >>94
アホはお前。そういうこと言わないの。
質問者はたぶん、ひょっとしてもっとスッキリ書ける方法があるけど
自分が知らないだけじゃないかと思っただけでしょ。
他ではやりづらいアホな質問でも気軽にできる2chの数少ない利点を
つぶすようなことしてどうする。 >>95
それって逆に言うと今の自分レベルには読めないコードを書こうとしてるわけで
突き詰めて考えるとやっぱりバカなんだよ
いいじゃん
バカって言ってあげようよリアルだと
なかなか聞けないし さらに何がスッキリなんだろう?
現状のコードと改変後のコードを比較して
メリットデメリットを説明できるんだろか?
工数の短縮なのか?
わかりやすさなのか?
汎用性なのか?
他言語への移植のしやすさなのか?
実行速度なのか?
実行負荷なのか?
初心者スレだからこそ問い詰めたい まあまあwww
pythonでは
line="yamda,090-0000-0000"
name,phone=line.split(',')
でnameとphoneが代入できる
これを最初に見た時なんだか目からうろこが落ちた
便利っちゃ便利だわな ダメだなこりゃw
なるほど知らないことを知ろうとすることが「自分レベルには読めないコードを書こうとしてる」
ことになるわけか。
こういうのを牽強付会って言うんだよね。
バカって言われるべきなのはお宅の方だと思うよw >>99
違うよ
目的がねーもん求めるなっつってんの
今回でいうと
スッキリってなーに?
って話かな
仮にスッキリ(?)書けたとして
それって何が良かったの?
って説明できるのか?
と c# の新しいタプルが導入されたとしてもさっきsplitされた配列から直接代入できない
拡張メソッドを自分で書くしかない ■ このスレッドは過去ログ倉庫に格納されています