1 名前:デフォルトの名無しさん mailto:sage [2018/04/06(金) 17:40:19.48 ID:oKXVP34zM.net] 「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。 他のスレッドでは書き込めないような低レベルな質問、 質問者自身なんだか意味がよく分からない質問、 ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。 内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。 なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。 C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください >>980 を踏んだ人は新スレを建てて下さい。 >>980 が無理な場合、話し合って新スレを建てる人を決めて下さい。 ■関連スレ C#, C♯, C#相談室 Part95 mevius.5ch.net/test/read.cgi/tech/1508180530/ C#, C♯, C#相談室 Part93 https://mevius.5ch.net/test/read.cgi/tech/1492818720/ ■前スレ ふらっと C#,C♯,C#(初心者用) Part136 mevius.5ch.net/test/read.cgi/tech/1520057345/ ■コードを貼る場合は↓を使いましょう。 ideone.com/ https://dotnetfiddle.net/ ■情報源 https://msdn.microsoft.com/ja-jp/library/gg145045.aspx https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index https://msdn.microsoft.com/en-us/library/gg145045.aspx referencesource.microsoft.com/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
92 名前:デフォルトの名無しさん [2018/04/20(金) 12:23:49.11 ID:9v7e203Yr.net] 引数のとりようも戻り値の返しようもなんぼでもあるわ へんな忖度みたいな真似すんなボケ
93 名前:デフォルトの名無しさん mailto:sage [2018/04/20(金) 12:38:55.75 ID:9jg3Q7S00.net] >>89 作業が行われればレポートは要らないというのは例えば殺し屋みたいな? でもコンピューター上でそれを再現するならターゲットもターゲットの生死も0と1のデータなんじゃないの? だとしたらそのデータはどこに消えるの??? >>90 同じようなことばっかり聞いて悪いんだけど再描画の結果も0と1のデータなんじゃないの? それがメモリに残らないのに再描画は成功という意味がわからない >>91 戻り値の返しようがあるというのは返さない選択肢もあるということ??? 戻り値を返さないプログラムに人間に読ませる以上の価値があるとすればそれを教えて欲しい
94 名前:デフォルトの名無しさん mailto:sage [2018/04/20(金) 12:44:06.99 ID:yZlfbYWOM.net] オブジェクトとは何かね
95 名前:デフォルトの名無しさん mailto:sage [2018/04/20(金) 12:52:07.95 ID:wBOVlPyYM.net] >>92 横からで悪いけどたとえ話がおかしいし 言ってることが伝わらない もっとまとめてから書くべき
96 名前:デフォルトの名無しさん mailto:sage [2018/04/20(金) 12:58:41.12 ID:luJyaFhBa.net] >>81 まあ、一言でいうと愚問だねw そんなこと考えても時間のムダ。 真面目な話、その疑問はそのまま放置して前に進む方がいいと思う。
97 名前:デフォルトの名無しさん mailto:sage [2018/04/20(金) 13:08:12.31 ID:9jg3Q7S00.net] >>93 オブジェクト指向ってやつか! オブジェクトを使うと結果がない処理にも意味があるってこと? >>94 まとめるなら「結果がない処理の価値がわからない」って感じかなあ >>95 詰め込み教育への皮肉だと思うけど正直分かりにくいかも もし本気で言ってるならさすがに時代遅れだから考え直したほうがいいよ
98 名前:デフォルトの名無しさん mailto:sage [2018/04/20(金) 13:26:58.95 ID:luJyaFhBa.net] >>96 経験が足りないために起こる疑問は経験を詰むことでしか解決しない。 構造化プログラミングの意義もOOPの意義も、体感できるのは 実際にコードを自分でコードが書けるようになってから。 本で読んだだけで最初からそれが分かるのは一部の天才だけ。 逆にいえば、>>81 の疑問は頭の良い人が考えた難しい理論を理解しないと 解決しないような問題じゃなく、誰でも体験すれば自然と分かる程度の話ってこと
99 名前:デフォルトの名無しさん mailto:sage [2018/04/20(金) 13:48:46.74 ID:o6RSJKQdd.net] >>92 0と1?何を言ってるのかわからん 14時に集合ってメール出して、全員からわかったみたいな返信きてもうざいだろ? だから、14時集合(返信不要)ってメールをおくる方が受け取る側も返信しなくていいし、送る側も無駄な受信を減らせるしでwinwin この辺りは経験だったりセンスだろうな
100 名前:デフォルトの名無しさん mailto:sage [2018/04/20(金) 14:03:32.43 ID:0EVFmTU60.net] >>96 成否の観点では単にフィールドの値を設定するメソッドを鑑みても メモリに書き込み失敗の概念があっても、代入に失敗の概念はない 設定前の値を返すにしても、わざわざ退避する処理を強制するのか? 想定外の発生は基本的に例外をぶん投げるものだし 常人が気にしない様な事を考えて躓いてそうである
101 名前:デフォルトの名無しさん mailto:sage [2018/04/20(金) 19:05:49.61 ID:W6WTRmLV0.net] 関数型プログラミングの才能があるな
102 名前:デフォルトの名無しさん mailto:sage [2018/04/20(金) 20:30:59.54 ID:kti4nAgp0.net] >>96 戻り値がないのは常に「成功」を返す関数と考えて良い C#では失敗した場合は例外を投げるので、成否を戻り値で判定することはない C言語とかgoみたいに例外という概念がない言語は、成功したかどうかが戻り値に入ってることが多い それでも絶対に失敗しないか、失敗したらプログラムが強制終了するような処理は戻り値がない場合もある
103 名前:デフォルトの名無しさん mailto:sage [2018/04/20(金) 21:05:01.73 ID:Yi5F0BBw0.net] >C#では失敗した場合は例外を投げるので、成否を戻り値で判定することはない えぇ…
104 名前:デフォルトの名無しさん [2018/04/20(金) 21:14:39.58 ID:7WlEIf700.net] >>101 > C#では失敗した場合は例外を投げるので、成否を戻り値で判定することはない ケースバイケース。何でもかんでも例外にしちゃ駄目。
105 名前:デフォルトの名無しさん mailto:sage [2018/04/20(金) 21:42:51.61 ID:9jg3Q7S00.net] >>97 とりあえず>>95 が本気なのとそれが思考停止の詰め込み教育信奉じゃないのは分かったよ 偉そうなこと言ってごめん >>98 自分もちゃんとは理解してないけどコンピューターは0と1だけで動いてるらしい でも初心者用スレで
106 名前:出す話ではなかったと反省 メール送信の例は分かりやすい!と思ったけど本当に結果が何もないと送信済みマークも付かないのでは・・・? >>99-103 詳しい人でも意見が割れるくらい難しい問題なのね >>100 は皮肉なんだろうけど意味どころか自分に向けられた言葉なのかも分からないから反応に困る・・・ [] [ここ壊れてます]
107 名前:デフォルトの名無しさん mailto:sage [2018/04/20(金) 21:52:31.13 ID:7WlEIf700.net] >>104 元の発言の「結果が無い」って言葉を勘違いしてる。 関数で処理した結果を返り値と言う形で関数の呼び出し元に伝える必要が無いって意味だ。 ちゃんと意味のある結果は発生している。
108 名前:デフォルトの名無しさん mailto:sage [2018/04/20(金) 22:00:49.23 ID:kti4nAgp0.net] >>102-103 書き方が変だった C言語やgoと比べて成否を例外で処理することが多いから戻り値がなくても良い場合が多い程度の意味で言った >>104 メール送信の結果は戻り値ではない方法で返しているというだけ C#には例外やイベントのように色々な機構があるから、とりあえず細かいことは気にせず先に進んだ方がいい
109 名前:デフォルトの名無しさん mailto:sage [2018/04/20(金) 22:22:51.74 ID:UaVetxYYM.net] 関数という言葉に惑わされてるということかな メソッドは数学で言う関数そのものじゃない (y=x+1とかそういうのじゃない) やることを順番に書いてあるもの サブルーチン 戻り値が定義されてたそれを返すだけ ほかの言語で戻り値がないものは関数と区別してる言語もあるけど わざわざ二種類つくるより戻り値なしで共通にしてある
110 名前:デフォルトの名無しさん mailto:sage [2018/04/20(金) 23:07:04.14 ID:0EVFmTU60.net] >>104 その辺は想定外と書いたように>>103 よろしくケースバイケースだよ 十分想定され例外情報すら要らんなら戻り値で成否を返す事もあるし InvalidProgramExceptionみたいに言語レベルでは処理できない物もある 話が逸れたけどOSレベルでは例外を発生させる余地などが有ったとしても プラットフォーム次第になったりと言語レベルで突き詰めない場合は多い
111 名前:デフォルトの名無しさん mailto:sage [2018/04/20(金) 23:38:50.80 ID:iIb0CR1w0.net] いろいろ調べたり考えたりしたのですが、解決出来ないので質問します。 https://dotnetfiddle.net/SoCII1 このようなコードがあって List<ITest>にいれていったときに ListのXだけを全て足して返す関数は出来たのですが、今後ITestのプロパティは増える予定で、それぞれに足して返す関数をつけたいです。 そのときに似たようなコードになるので一つに纏めようとしたのですが中々できず困っています。どのような書き方をすればいいでしょうか?
112 名前:デフォルトの名無しさん mailto:sage [2018/04/21(土) 02:21:21.95 ID:lHgu/nQp0.net] >>109 基本的にはプロパティを動的に指定するのはリフレクションとかDictionaryを駆使とか、何らかの形でコストを払うことになると思う 状況にもよるけど、コンパイル時に確定してるならT4テンプレートとかコード生成とかで対応するのが一番正しいんじゃないかな
113 名前:デフォルトの名無しさん mailto:sage [2018/04/21(土) 02:34:40.78 ID:m0t/bmNLa.net] >>109 そんなものは自作しなくてもList自身(正確にはIEnumerable<T>だけど)が持ってるw 名前もそのまんまSumだからよくMSDNを見てみ https://msdn.microsoft.com/ja-jp/library/6sh2ey19.aspx
114 名前:デフォルトの名無しさん mailto:sage [2018/04/21(土) 03:42:29.63 ID:MaG6OThU0.net] >>111 んー、エスパーだけど、質問者はプロパティをforeachみたいに回して全てにsumするようなのをプロパティの数に限らず1行で書きたいってことじゃね?
115 名前:デフォルトの名無しさん mailto:sage [2018/04/21(土) 07:59:48.29 ID:z4AHgN+yd.net] >>104 メソッドの戻り値とコンピュータの世界は全く関係がない 低級のマシン語をわかりやすくするための高級言語なんで初心者用スレで〜というよりは見当違いなことを言ってる っで、結果とは低級レベルでの結果とメソッドレベルの結果のどちらをさしている? 低級レベルでの結果が表に出てこないのは普通のこと メソッドレベルで見てもメールの送信済マークを含めてないのでメソッド戻り値の返さない
116 名前:デフォルトの名無しさん mailto:sage [2018/04/21(土) 08:37:04.35 ID:i7kmKmol0.net] >>110 リフレクションについて調べて何とか出来ました!ありがとうございます! >>111 ,>>112 もう少し具体的に書いていれば良かったですよね・・・今後質問するときはもっと詳しく書くので、そのときはよろしくお願いします!
117 名前:デフォルトの名無しさん mailto:sage [2018/04/21(土) 10:09:06.82 ID:XwcbmKc5a.net] 連続時間的な関数ってあります?
118 名前:デフォルトの名無しさん mailto:sage [2018/04/21(土) 10:52:04.99 ID:WnG+wEwt0.net] 連続時間 is 何
119 名前:デフォルトの名無しさん mailto:sage [2018/04/21(土) 11:00:42.32 ID:k3YYD8ov0.net] エポック秒のことかなぁ
120 名前:デフォルトの名無しさん mailto:sage [2018/04/21(土) 12:09:05.27 ID:Y1+gKOzZa.net] アナログメーター的なやつです
121 名前:デフォルトの名無しさん mailto:sage [2018/04/21(土) 12:39:56.06 ID:k3YYD8ov0.net] >>118 プログレスバーでググってみてはどうか
122 名前:デフォルトの名無しさん mailto:sage [2018/04/21(土) 13:49:43.77 ID:gbvJ8fZ/a.net] 時空連続体と空目した
123 名前:デフォルトの名無しさん mailto:sage [2018/04/21(土) 18:22:05.73 ID:V5ZTEj450.net] プログレスバーってもろデジタルメーターじゃないですか 数百〜数千の筋繊維を一本の糸で表現できるような関数はないですかね
124 名前:デフォルトの名無しさん mailto:sage [2018/04/21(土) 18:29:18.80 ID:LQq77Lfe0.net] you!画像ファイル扱っちゃいなyo!
125 名前:デフォルトの名無しさん mailto:sage [2018/04/21(土) 18:52:17.79 ID:rKiuu7+10.net] >>121 >>118 のアナログメーターも全く関係ないんだけど? 筋線維もよく意味が分からないし、糸の振動の軌跡の描画みたいなことやりたいのなら自分で作るしかないよ
126 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 00:35:03.08 ID:XfnBBJY5M.net] プリンタの印刷設定の縦横を変更したいです。 DefaultPageSettings.Landscape プロパティから変えられるのは確認しましたが 一時的なものではなく、プログラムが終了したあとも変わったままにしておきたいのですが なにか方法はないでしょうか? bbs.wankuma.com/index.cgi?mode=al2&namber=2377&KLOG=2 このサイトも参考にしてSetHdevmodeなどもやってみましたが、プログラム終了後にもとに戻ってしまいます。 Windows7,10 64bitです
127 名前:デフォルトの名無しさん [2018/04/22(日) 00:38:42.31 ID:2TRizD7z0.net] 筋繊維を糸で表現ってそれもう物理演算じゃん
128 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 01:10:17.94 ID:6eouzp2p0.net] 何がしたいのかよう分からん >数百〜数千の筋繊維を一本の糸で表現できるような関数 が欲しいなら 「アナログメーター」なんて単語は出てこんと思うのだが なんか特殊な知識が必要なことやってるなら なおさらキチンと説明しないといかんだろう
129 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 02:16:18.41 ID:I1dKrIqPa.net] >>124 次回そのプログラムを起動した時も同じ設定が適用されるようにしたい、 という意味なら、Landscape を永続化すればいいだけでしょう。 同じ設定が他のプログラムにも適用されるようにしたい、って意味なら、 たぶんそんなことは出来ないんじゃないかと... よく知らんけど
130 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 07:35:23.33 ID:XfnBBJY5M.net] >>127 後者の方を考えています。 なにか方法があればいいのですが、、、
131 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 09:24:44.12 ID:RctEGmkE0.net] 他のプログラムでも同じ設定を使いたいんならプリンタドライバの設定変更以外に方法はない てかそれってC#関係ないよね
132 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 19:36:51.14 ID:YjWQK7FP0.net] [[['[] ]]] { {] ]][ '[][][] [][] [][][] [] '[] []
133 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 21:23:13.30 ID:AB//w8nmp.net] c#勉強始めたての者です。 indexofで文字列を検索しようとしているのですが、長文を検索するとエラーが出てしまいます。 MSDNを見ると戻り値がint32とあり、戻り値がintの範囲を超えるとlongエラーになるように推測していますが対応方法はあるのでしょうか。
134 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 21:24:53.81 ID:AB//w8nmp.net] すみません上記文中のlongは誤植ですので読み飛ばしてください。
135 名前:デフォルトの名無しさん [2018/04/22(日) 21:30:18.18 ID:PsQCMKRd0.net] そう言われるともうlongしか見えない
136 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 21:37:33.88 ID:hhQLBFvv0.net] 文字数がintに収まるように文字列を切り出しながら検索すればいいんじゃないか もちろん切れ目に検索対象の文字列が有るときの対策して切り出さなきゃならんけど
137 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 22:10:29.71 ID:VNNE7LSc0.net] ありがとうございます。 matchメソッドというのを見つけました。 全然見つからなかったのに投稿し出来すぐ見つかるものですね。 matchで出来なかったらint分割にトライしようと思います。
138 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 22:23:25.89 ID:f9F/Sp5R0.net] フォーム上のコントロールを、プログラムから参照するいい方法はないでしょうか SplitContainer上に配置した合計20個のチェックボックスについて、textをファイルから 読み込んだものに動的に変更したいと考えています 手元の書籍(作って覚えるc#)では、forループの中で splitContainer1.Panel2.Controls[i].Text = mistakeText; という形でやっていましたが、今回自分で用意したフォームはほかにもテキストボックスや ラベルがあり、うまくチェックボックスを対象としてくれません デザイン画面で配置した順番にやや依拠しているようですが、最後においたものほど添字が 小さそうだ、程度しかわかりません 今後デザインを変更する、あるいはチェックボックスを増やす可能性を考えると、何らかの プロパティで順番を指定できるといいなと思いますが、発見できませんでした Form1.Designer.cs のメンバ変数宣言欄に記載がある順番のように思えますが、IDEが 自動生成したコードを並べ替えるのも何やら気持ち悪く、今の所手を出していません 今回はチェックボックスですが、ほかにもラベルを順に参照するとか、テキストボックスを 順に参照する方法などあれば、教えていただけると助かります なお、今回のフォームでは、とりあえずチェックボックスの名前は初期値(checkBox1など)に なっています
139 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 22:25:29.08 ID:tqpEX+7y0.net] >>136 if (Controls[i] is CheckBox)
140 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 22:43:50.37 ID:VtQV/Dmoa.net] >>136 根本的に考え違いをしてると思う。 たぶんありもしないものをあるはずだと勝手に思い込んでる。 コントロールをテーブル参照したいなら自分で明示的にテーブル(配列)を 宣言しましょう。 デザイナには君が欲しいと思っているものを忖度して自動で作ってくれるような 都合のいい機能は存在しない。
141 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 23:18:57.35 ID:f9F/Sp5R0.net] >>137 とりあえずチェックボックスだけを選択することは可能になりました 順番はやはり思っているとおりにいきませんが、これは実行結果を見つつ、デザイナで 並べ替えるしかないかなと思い始めました >>138 デザイナが忖度してくれるとは思っていないので、プロパティか何かで明示的に選択する 事ができないかな、と思ったのです 以前VBAで似たようなものを作った際は、 Controls("CheckBox" & i).Caption = Cells(i, 1) こんな選択の仕方ができたので、c#でもなにか方法はあるのではないかと思いました
142 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 23:35:35.52 ID:Kp2niQOT0.net] >>139 コントロールに名前付ければいいじゃん フォームにあるコントロールをどうやって特定したいと思ってるの?
143 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 23:50:44.34 ID:f9F/Sp5R0.net] >>140 例えば Panel.Controls.CheckBox[i] みたいな形で指定できればいいなと思ってるんですが、残念ながらそうできないですね >>138 が書いている、自分で明示的にテーブルを宣言するというのは、例えば cbox[1] = CheckBox1; cbox[2] = CheckBox2; とかいうコードを予め書いておく、ということでしょうか?
144 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 00:02:33.07 ID:Xa6TKCtV0.net] >>141 意味がわからない 何がしたいの? @コントロールを特定する必要がある A複数のコントロールに共通の処理がしたい Aにしか目が行ってないけど@をやらなきゃいけない時点で Aの方法なんてエレガントにできたってウンコブリブリじゃん
145 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 02:11:14.44 ID:kNAX3uRd0.net] オムツの取り替えまでやって欲しい要介護は大人しくVBやってろ
146 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 03:09:44.29 ID:0OUySOiKa.net] >>141 だから、配列が欲しいなら配列を自分で作ろうよ。 配列が欲しい、でもなんだか自分で配列を書くのは嫌だ。 この発想がおかしい。 var cbs = new[] {CheckBox1, CheckBox2, ...}; これ書くのがそんなに面倒? 変な方向に努力する方が余程面倒でしょ ローカル変数じゃなくてメンバ変数かプロパティとして実装する場合だって手間は大差ないよ
147 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 06:08:01.85 ID:wp3u/AuE0.net] >>144 配列を書くのは別に面倒でもなんでもないです コピペしてちょっと直せば済むので ただ、コピペで済む内容なら、コードで表現する方法があるのではないかと思ったのです 「新しくなにかプロパティを実装する」のではなく、「このプロパティを参照するとわかる」 という情報が存在するのかと考えました >>138 が書いてくれたように、「ありもしない物をあるはずだと思い込んでる」のかもしれません
148 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 06:12:48.73 ID:Xa6TKCtV0.net] >>145 それって同じフォーマットの行が並んだ設定ファイルみたいになんでしょ? どの部分を自動でやってくれると思ってん?
149 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 07:30:25.22 ID:wp3u/AuE0.net] >>146 自動でやってくれると言うか、Controls[n] の n に相当する部分を、何らかのプロパティで 持っているのではないかと思ったのです それがわかれば、IDEでプロパティを書き換えてやればそれで済むな、と あるいはそれがなければ、例えば for (int i = 0; i < CBOX_ELEMENTS; i++) { string s = "checkBox" + (i+1).ToString(); Controls(s).Text = ... } みたいな形で指定できないかな、と思っていたのですが、これは無理そうですし
150 名前:デフォルトの名無しさん [2018/04/23(月) 07:45:09.58 ID:7CTglbRxa.net] 配列作って突っ込んどくのが何より簡単だし自由だろ
151 名前:デフォルトの名無しさん mailto:sage釣 [2018/04/23(月) 08:09:08.34 ID:voecBiJS0.net] >>147 インデクサじゃ駄目なの?
152 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 08:16:30.00 ID:C4a+50u5M.net] >>147 ちがくね? お前がやりたいのって別のデータとid(?)が一致する項目にデータを入れていきたいんじゃねーの? でもそれってコントロールを特定する必要があるんだよね? コントロールとデータを紐付ける何かはあるの?
153 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 08:33:16.26 ID:KdhM7QliM.net] GetAllControlsのカウント取るとかそういう?
154 名前:デフォルトの名無しさん mailto:sage釣 [2018/04/23(月) 08:37:13.12 ID:+9lDlXeaM.net] Type.GetPropertiesの方かな
155 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 09:14:18.74 ID:y08K2+qf0.net] VB6はコントロール配列があったけどなー。.Netの世界にはないからの。
156 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 12:01:51.66 ID:joGGyVH30.net] ttps://dobon.net/vb/dotnet/control/findcontrolbyname.html 名前で探せばいいのでは?
157 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 12:30:43.09 ID:b1ST+81Ba.net] だから配列に突っ込めば済む話を何でわざわざより面倒な方法で解決しようとするのw
158 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 12:34:22.72 ID:HUKatAJtr.net] >>150 いや、単純にファイルから読み込んだ名前で、チェックボックスの文字を変えたいだけです 例えばファイルの中身が 犬,猿,雉だったら?CheckBox1-3の文字をそれぞれ犬、猿、雉にしてCheckBox4-20は「使用不可」にでもするような だから機械的に参照できればよかったのです >>154 これでほぼ解決です、ありがとうございます
159 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 12:39:13.94 ID:HUKatAJtr.net] >>155 まあ一言でいうと、わざわざ自分で配列を作らなくても、それを実現する方法はすでに存在するだろうと思ってたのです 配列作ったら「そんなことしなくてもこう書けば一発で参照できるのに」って言われる方法があるんじゃないかと
160 名前:デフォルトの名無しさん mailto:sage釣 [2018/04/23(月) 12:39:38.75 ID:+9lDlXeaM.net] >>156 その下にインデクサによる説明もあるだろw
161 名前:デフォルトの名無しさん [2018/04/23(月) 13:33:10.44 ID:48XgAlPp0.net] public partial class Form1 : Form { public Form1() { InitializeComponent(); this.checkBoxes = this.Controls.OfType< CheckBox >().OrderBy( x => x.Name ).ToArray(); } private CheckBox[] checkBoxes; }
162 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 17:06:56.96 ID:FWk6fNJV0.net] public class B : private A { } みたいなこと C# じゃ出来ないんだっけ?
163 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 17:10:12.77 ID:BY7S8wKYd.net] >>160 継承元をprotectedにすれば継承したクラスからしかアクセスできないようにはできる
164 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 17:25:36.44 ID:b1ST+81Ba.net] >>160 何言ってるのかわかりませんw
165 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 18:05:17.14 ID:BY7S8wKYd.net] そのクラス経由でしかアクセスできないようにしたいってことじゃないの?
166 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 18:18:07.68 ID:CCSIsfHWM.net] ゆとりしか居ないのかなぁ C#はprivate継承はサポートしてないよ フィールドに持たせて移譲メソッド書くしかない
167 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 18:31:05.83 ID:VMRJeQmYd.net] >>164 ゆとりなんてもうオッサンやでおじいちゃん?
168 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 18:38:07.42 ID:BY7S8wKYd.net] これ参考にすればいいのかな ufcpp.net/study/csharp/oo_conceal.html protected internal 同一プロジェクト内のクラス内部、または、派生クラスの内部からのみアクセス可能 private protected (C# 7.2 以降)同一プロジェクト内のクラス内部、かつ、派生クラスの内部からのみアクセス可能 こういうこと?
169 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 18:52:13.60 ID:Xa6TKCtV0.net] >>156 それで解決しねーだろ バラっバラにくんじゃね? 俺はてっきりコントロールの 座標でソートして名前付けたいのかと思った
170 名前:135 mailto:sage [2018/04/23(月) 21:02:25.52 ID:wp3u/AuE0.net] 皆様いろいろありがとうございました >>159 書いてくださった方法が、ほぼ私が求めていたものを完璧に実現しています 抱かれてもいいくらい惚れました ただ、試してみたところピックアップされる順番は必ずしもコントロールを配置した 順番通りではなく、はっきりした法則性も見いだせませんでした テストプログラムを書いて、インデックスと見た目を一致させるようデザイナで コントロールを並べ替えようかとも思いましたが、後日コントロールを追加した際 悩むことになりそうなのでやめておきました >>154 結局この方法でコントロールを検索し、発見したコントロールをリストに追加するという 方法で対応することにしました >>155 配列に突っ込むにも、コード上に直接 checkBox1 とか checkBox2 とかのリテラルを 埋め込みたくなかったので、検索した上で配列を作ることにしました >>149 , 150, 151 実は書いていることがわからないレベルなので、これから勉強します 「作って覚える」は一通りやったので、「独習c#」を紐解いてみます >>167 これで解決しました 158の方法で解決するかと思っていたのですが、やってみたところバラバラの順番でした 皮肉でもなんでもなく、コントロールの座標でソートとか、なぜそういう操作をしたいのだろうと 推測したのか教えていただけると嬉しいです 今後も質問すると思いますので、疑問点がわかりやすい文章を意識する必要があるので
171 名前:デフォルトの名無しさん [2018/04/23(月) 21:07:14.52 ID:QriAiZTC0.net] 今日からC#勉強し始めたけど、 結構ネスト深くなる言語っぽいね、これ。こんな… namespace ConsoleApp1 { class Program { static void Main(string[] args) { try { checked { sbyte a = 64; sbyte b = 65; sbyte c = (sbyte)(a + b); } } catch (OverflowException ex) { Console.Write(ex.Message); } } } }
172 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 21:09:42.34 ID:b1ST+81Ba.net] >>168 いやいやいやcheckBox1 とか checkBox2 とかはリテラルじゃないってw ただの識別子(フィールド名) コードにリテラルを埋め込むというか、コンパイル時に誤りを検出できない (普通の理解では)お行儀の悪いコードになるのはむしろ>>154 みたいな方法だってw
173 名前:デフォルトの名無しさん [2018/04/23(月) 21:09:53.25 ID:QriAiZTC0.net] namespaceとかcheckedがブロックなのが何かなぁ…
174 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 21:27:15.55 ID:wp3u/AuE0.net] >>170 おっと・・・ どうやら根本的なところで間違っていたようです 書いてあるとおりだとすると、質問とレスが噛み合っていない理由がわかりました わざわざ行儀の悪い書き方を探していたのか
175 名前:デフォルトの名無しさん [2018/04/23(月) 21:37:46.50 ID:48XgAlPp0.net] >>168 >>159 はOrderBy()でチェックボックスの名前(Name)順にソートしてる。 Nameの代わりに、TabIndexかTagを設定してそれを利用しても良い。 というか、Nameだとチェックボックスが10個以上になるとソートが望むようにならないか。
176 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 21:45:21.31 ID:Xa6TKCtV0.net] >>168 おそらく配置したコントロールから欲しい情報は座標とサイズぐらいしかない それらの特定情報は別ファイルにある なのでコントロールが上から もしくは左からか順番に取得できれば 別ファイルに記述した通りの順番で情報を並べることができる Controlsで取得できる順番はよく知らないけど 作った順かあるいわなんの特徴もなくランダムか何かを保証するものではないのかな?と
177 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 22:10:47.18 ID:48XgAlPp0.net] >>174 Controlsが返す順番は保証されてないけど、自分でソートすれば良い。 (1)TabIndex順 (各CheckBoxにタブオーダー(TabIndex)を設定しておく) this.checkBoxes = this.Controls.OfType< CheckBox >().OrderBy( x => x.TabIndex ).ToArray(); (2)Tag順 (各CheckBoxのTagに数値を設定しておく) this.checkBoxes = this.Controls.OfType< CheckBox >().OrderBy( x => x.Tag ).ToArray(); (3-1)Location順(左から) this.checkBoxes = this.Controls.OfType< CheckBox >().OrderBy( x => x.Location.X ).ThenBy( x=> x.Location.Y ).ToArray(); (3-2)Location順(上から) this.checkBoxes = this.Controls.OfType< CheckBox >().OrderBy( x => x.Location.Y ).ThenBy( x=> x.Location.X ).ToArray();
178 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 22:33:20.75 ID:fnmaDcrK0.net] >>156 そういう使い方なら、チェックボックスを先に作っておくんじゃなくて ファイルから読んだ内容で動的に作っていった方が手っ取り早い どうせチェックボックスは全部等間隔に並べるんじゃろ?
179 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 22:53:14.98 ID:pYJnxPYX0.net] WPFのサンプルでありそうな話だ
180 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 23:04:57.82 ID:0nhwdYRFa.net] >>127 ,>>129 >>124 です SetPrinter関数を使用することで実現できました。ありがとうございました。
181 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 00:40:53.09 ID:U7B9av/W0.net] >>169 そのtry意味ないんだけど。。
182 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 00:55:02.77 ID:P/LpDfjz0.net] >>179 ネストのイメージ書きたかっただけだろうよ
183 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 06:02:26.80 ID:PLNFE8AC0.net] >>174 なるほど、コントロールから情報を取得する必要があると思えたのですね 実際はそれ以前の段階でしたが >>176 それも考えたのですが、デザイナで画面を確認したいので、静的に用意して おきたいという結論になりました 動的に置くほうが難易度高そうだ、と思ったのもありますが
184 名前:デフォルトの名無しさん [2018/04/24(火) 11:44:27.10 ID:MJ0NRymv0.net] >>179-180 「意味無い」って、どういう意味?
185 名前:デフォルトの名無しさん [2018/04/24(火) 12:45:33.19 ID:MJ0NRymv0.net] うぇぇ、C#、goto文使えるし…
186 名前:デフォルトの名無しさん [2018/04/24(火) 13:15:16.40 ID:MJ0NRymv0.net] うーん、string x = "10"; に対して x.toString(); するんじゃなくて、int.Parse(x); するのか…。 xオブジェクトにintegerを吐き出させるのではなく、 integerオブジェクトにxオブジェクトを与えてintegerを吐き出させる…。 これは初めての体験だな…。
187 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 13:18:45.32 ID:Ajvhvjmq0.net] 何もかも間違っててワロタw
188 名前:デフォルトの名無しさん [2018/04/24(火) 13:34:52.91 ID:MJ0NRymv0.net] なにゆえ?
189 名前:デフォルトの名無しさん [2018/04/24(火) 13:45:01.31 ID:MJ0NRymv0.net] expression-bodied関数は、なんかエロいな…
190 名前:デフォルトの名無しさん [2018/04/24(火) 13:46:08.52 ID:MJ0NRymv0.net] やってる事は違うけど、考え方的にはCのマクロに近いのかな…
191 名前:デフォルトの名無しさん [2018/04/24(火) 13:50:59.68 ID:MJ0NRymv0.net] LINQ…、エロいな…。
192 名前:デフォルトの名無しさん [2018/04/24(火) 13:53:53.94 ID:MJ0NRymv0.net] 関数名がアッパーキャメルなのは感心せんなぁ…