[表示 : 全て 最新50 1-99 101- 201- 2ch.scのread.cgiへ]
Update time : 10/26 17:42 / Filesize : 74 KB / Number-of Response : 273
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん [2019/10/07(月) 20:16:17.93 ID:9eyAES450.net]
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)

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

■前スレ
ふらっと C#,C♯,C#(初心者用) Part144
https://mevius.5ch.net/test/read.cgi/tech/1563258983/
■関連スレ
C#, C♯, C#相談室 Part95
https://mevius.5ch.net/test/read.cgi/tech/1508168482/
■コードを貼る場合は↓を使いましょう。
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/index
https://docs.microsoft.com/en-us/dotnet/standard/class-libraries
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

75 名前:デフォルトの名無しさん mailto:sage [2019/10/11(金) 17:10:57.43 ID:Nij9ynML0.net]
>>72
カンマ区切りの文字列にでもするとか

76 名前:デフォルトの名無しさん mailto:sage [2019/10/11(金) 17:48:11.14 ID:6fhPxX7E0.net]
json.netで文字列にして保存とか・・・そこまでやるならってのはナシで

77 名前:デフォルトの名無しさん mailto:sage [2019/10/11(金) 17:58:14.17 ID:Y/pxrYXGM.net]
>>71
バカの逆ギレかよ
念の為に言っておくけど元々>>47程度の要件では派生クラスからCを呼ぶなんて必要ないってことな
まあ君には一生理解できないかもしれないけどw

78 名前:デフォルトの名無しさん mailto:sage [2019/10/11(金) 18:18:20.39 ID:8nYO+EkJd.net]
質問した人はもはや興味なくなってそう

79 名前:デフォルトの名無しさん mailto:sage [2019/10/11(金) 19:16:25.09 ID:BNgoH63S0.net]
>>75
レスサンクス
カンマで区切って、文字列を数値にして
今それっぽい事をやってみたんですが、なにやら挙動があやしい

>>76
れすさんくす
やはり文字列になってしまうのでしょか、int[]あれば便利なのに

80 名前:デフォルトの名無しさん mailto:sage [2019/10/11(金) 19:54:41.57 ID:V+fiNkQ50.net]
splitで配列化出来るでしょ?

81 名前:デフォルトの名無しさん mailto:sage [2019/10/11(金) 19:57:20.55 ID:Nij9ynML0.net]
挙動が怪しいって言われてもコメントしようがない

82 名前:デフォルトの名無しさん mailto:sage [2019/10/11(金) 19:59:39.92 ID:NbTMQOfEr.net]
カンマが全角半角交じりなのかもね

83 名前:デフォルトの名無しさん mailto:sage [2019/10/11(金) 20:21:50.98 ID:BNgoH63S0.net]
>>80
さんくす
数字カンマで区切ってsplitですか、簡単にできそうですね

>>81
保存する種類をsystem.collections.specialized.stringcollectionとゆう文字列のコレクションを使って
.addと.clearでいろいろやってるうちにwidthが0になったりと

Properties.Settings.Default.cellwidth = new System.Collections.Specialized.StringCollection();
for (int i = 0; i < DataGridView1.ColumnCount; i++)
{
  Properties.Settings.Default.cellwidth.Add(DataGridView1.Columns[i].Width.ToString());
}
こんなんです、これは捨てます



84 名前:デフォルトの名無しさん mailto:sage [2019/10/11(金) 20:36:41.64 ID:w9BsPIYw0.net]
string.Join(",", array)で保存
array=text.Split(",").ToArray()で復元
スマホで書いたからミスってたらごめん

85 名前:デフォルトの名無しさん mailto:sage [2019/10/11(金) 20:37:39.82 ID:NJkU4MQ7a.net]
>>49
非光沢液晶のパソコンでプログラミングすることをすすめます。

86 名前:デフォルトの名無しさん mailto:sage [2019/10/11(金) 20:48:12.25 ID:BNgoH63S0.net]
>>84
さんくすです
それは答えですね、やってみます

87 名前:デフォルトの名無しさん mailto:sage [2019/10/11(金) 21:11:40.42 ID:LwZAFcHp0.net]
これと違うの?
dobon.net/vb/dotnet/programing/mysettings.html#section5

88 名前:デフォルトの名無しさん mailto:sage [2019/10/11(金) 21:37:31.10 ID:LwZAFcHp0.net]
>>47
本来クラスA2に置くべきメソッドB2を
循環参照になってしまうからという理由で別クラスに作るというアプローチに問題がある

89 名前:デフォルトの名無しさん mailto:sage [2019/10/11(金) 21:55:04.78 ID:Obz6LqVu0.net]
不要な循環参照は避けるに越したことはないが
絶対に回避しないといけないものではないしな
設計的に妥当かどうか

90 名前:デフォルトの名無しさん mailto:sage [2019/10/11(金) 22:06:26.29 ID:BNgoH63S0.net]
>>87
さんくすです
型を増やすのは難しそうで、ちょっと敬遠してたのですが
いちどやってみます

91 名前:36 mailto:sage [2019/10/11(金) 22:30:13.36 ID:SS1U2hzP0.net]
遅くなりましたがありがとうございました。とりあえずprivateでやってみようと思います。
しかし恥ずかしながらローカル関数って初めて知りました……こんなんあったのか

92 名前:デフォルトの名無しさん mailto:sage [2019/10/11(金) 23:40:49.38 ID:AHeGNijQM.net]
なんとローカルクラスもあったりするぞ

93 名前:デフォルトの名無しさん mailto:sage [2019/10/12(土) 03:22:40.33 ID:wdaAvj3T0.net]
ローカルクラスとか初めて聞いたんだが
Javaか何かと間違えてないか?



94 名前:デフォルトの名無しさん mailto:sage [2019/10/12(土) 03:39:46.40 ID:GmlLfjiE0.net]
内部クラスつまりクラス内クラスのことかもな

ローカルクラスとは言わないけどな

95 名前:デフォルトの名無しさん mailto:sage [2019/10/12(土) 08:19:37.23 ID:2OGp7+/U0.net]
匿名クラスのことだろ
LinQの関数の戻りとかでたまに使う

96 名前: mailto:sage [2019/10/12(Sat) 08:24:48 ID:2OGp7+/U0.net]
var hoge = new { Name = "Masashi", Hage = true };
こんな感じで宣言出來ると思う

97 名前: mailto:sage [2019/10/12(Sat) 11:24:29 ID:tnbTUN6u0.net]
class hoge {
  class fuga {}
  class moge {}
}

こういうやつ
呼び方は知らん

98 名前: mailto:sage [2019/10/12(Sat) 11:25:43 ID:V3SUioeZ0.net]
ローカルクラスwww

99 名前:デフォルトの名無しさん mailto:sage [2019/10/12(土) 11:45:16.39 ID:vesGJIfT0.net]
Java 用語だったのか。 < ローカルクラス
クラス内だけじゃなくてメソッド内でも作れるみたいだけど。
匿名クラスは無名クラスだと思ってた自分。


この流れでしょうもないことを聞いてみる。

static なメンバ変数の修飾子というか、
static でないメンバ変数の this.[変数名] の this に当たるようなのってなにかないですか。
[クラス名].[変数名] で ok なのだけど、[クラス名] の部分を固定でやる方法ないかなと。

100 名前: mailto:sage [2019/10/12(Sat) 11:59:16 ID:XFT6PVwJ0.net]
>>99
エイリアスとかこういう話?
using ディレクティブ
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/keywords/using-directive

101 名前: mailto:sage [2019/10/12(Sat) 13:15:47 ID:4Z7PGm8S0.net]
>>100
横からだけど初めて知った
サンクス

102 名前:デフォルトの名無しさん mailto:sage [2019/10/13(日) 08:38:04.22 ID:LP1yPe2h0.net]
for(int i = 0; DataGridView1.Columns.Count > i; i++)
{
  DataGridView1.Columns[i].MinimumWidth = 20;
}
これってもっと簡単に書けませんか?

103 名前:デフォルトの名無しさん mailto:sage [2019/10/13(日) 08:43:29.30 ID:vtlUUDcx0.net]
重複するコードを削っていくのがコツ



104 名前:デフォルトの名無しさん mailto:sage [2019/10/13(日) 08:45:05.27 ID:vtlUUDcx0.net]
コード変えていいならLINQとかもあり

105 名前:デフォルトの名無しさん mailto:sage [2019/10/13(日) 09:09:50.77 ID:d8Y4MxQw0.net]
全回しするときは基本的にforeachを使う
ただlinqのforeachを使ってよいのかはよくわからん。パフォーマンス悪いと聞くし

106 名前: mailto:sage [2019/10/13(Sun) 09:18:59 ID:MGaULTRj0.net]
LinqにForEachはない
あれはリストのメソッドだよ

107 名前: mailto:sage [2019/10/13(Sun) 09:22:18 ID:LP1yPe2h0.net]
>>103>>104
さんくすです、LINQってことはSelectをつかうんでしょうか
>>105
さんくすです、パフォーマンスは落ちてもかまわないんで
最初foreachで書こうと思ったんですが、わからなく

108 名前:デフォルトの名無しさん mailto:sage [2019/10/13(日) 09:33:52.48 ID:f3TGJJSYa.net]
ん?
for (var c in DataGridView1.Columns) { c.MinimumWidth=20; }
よりも短く描きたいってこと?

109 名前:デフォルトの名無しさん mailto:sage [2019/10/13(日) 09:47:34.60 ID:OAJhlsQO0.net]
そんなんどうでもいいから動くモノ作れよ初心者

110 名前:デフォルトの名無しさん mailto:sage [2019/10/13(日) 11:07:58.19 ID:LP1yPe2h0.net]
>>108
さんくす、面白い書き方ですね、ただMimimumWidthが出てきませんでした
少し変えればよさそうだけど、どこをどうかえれば

111 名前: mailto:sage [2019/10/13(Sun) 11:40:17 ID:OktAHnGcM.net]
>>108
foreach

112 名前:デフォルトの名無しさん mailto:sage [2019/10/13(日) 11:45:00.17 ID:MGaULTRj0.net]
>>110
var をDataGridColumn に変えれば出る

113 名前:デフォルトの名無しさん mailto:sage [2019/10/13(日) 11:55:56.33 ID:f3TGJJSYa.net]
えーそんなわけないでしょと思って確認したら
ColumnsのDataGridViewColumnCollectionは非ジェネリクスのIListしか実装してないのか・・・
DataGridViewってVS2005以前の書き方で実装されてるのね

となると、かっこ悪いけどキャストをかませて
for (var c in DataGridView1.Columns) { (c as DataGridViewColumn).MinimumWidth=20; }
と書くくらいしかないか、>>103のとおりDataGridView.Columnsを変数にするくらいしかなさそう



114 名前:デフォルトの名無しさん mailto:sage [2019/10/13(日) 11:57:39.01 ID:f3TGJJSYa.net]
あ、forじゃなくてforeachか
ちゃんとIDEなりVSCodeなり立ち上げて書かなきゃだめね、失礼

115 名前:デフォルトの名無しさん [2019/10/13(日) 12:28:10.86 ID:Fykc0AcJ0.net]
抽象クラスとインターフェースの使い分けのコツを具体例で教えて下さい!

116 名前: mailto:sage [2019/10/13(Sun) 12:37:21 ID:mgqzqij/M.net]
昔の人は言いました「習うより慣れろ」

117 名前: mailto:sage [2019/10/13(Sun) 12:37:30 ID:f2RSEbKl0.net]
そんなんどうでもいいから動くモノ作れよ初心者

118 名前:デフォルトの名無しさん mailto:sage [2019/10/13(日) 12:43:25.13 ID:2Iz5cpana.net]
>>116
使い分ける必要はない
常にインターフェイスを使う、でいいよ
抽象クラスはインターフェイスを使った上で、どうしても実装の大部分が重複してしまうような場合に稀に使うことがある、という程度のもの
全く使わなくても問題はない

119 名前:デフォルトの名無しさん mailto:sage [2019/10/13(日) 12:58:41.62 ID:BB7naElC0.net]
>>100
所属クラスを示す汎用のエイリアスのようなものがないかなーと。
でも using static ディレクティブ自体を知らなかったので勉強になりました。これを定義すれば結果として同じ事出来るし。

ありがとう。

120 名前:デフォルトの名無しさん mailto:sage [2019/10/13(日) 13:02:36.16 ID:mgqzqij/M.net]
昔の人は言いました「100人のプログラマーがいたら100通りのオブジェクト指向がある」

121 名前: mailto:sage [2019/10/13(Sun) 13:29:52 ID:LP1yPe2h0.net]
>>112
さんくすです出ました
foreach(DataGridViewColumn c in DataGridView1.Columns) { c.MinimumWidth = 20; }

>>113
さんくすですキャストのほうでもいけました

122 名前: mailto:sage [2019/10/13(Sun) 14:00:31 ID:2cfG7zlA0.net]
8からデフォルト実装も入るからますます使いどころが

123 名前: mailto:sage [2019/10/13(Sun) 18:12:47 ID:0yCAsIX/0.net]
WinFormsで、フォーカスが当たってない時でもキー入力を取る方法ってありますか?



124 名前: mailto:sage [2019/10/13(Sun) 18:19:19 ID:jypX7pQ50.net]
>>123
https://qiita.com/sawasaka/items/b3d5285b4198c0e46628

125 名前:デフォルトの名無しさん mailto:sage [2019/10/15(火) 07:52:01.52 ID:AMNrrJ6ya.net]
>>123
key入力をグローバルHook

126 名前:デフォルトの名無しさん mailto:sage [2019/10/15(火) 11:19:35.89 ID:m0jqn6iGp.net]
アプリ自体にフォーカス当たって無くてもいいの?

127 名前:デフォルトの名無しさん mailto:sage [2019/10/15(火) 11:24:15.06 ID:pr9WFxZa0.net]
イインダヨ

128 名前:デフォルトの名無しさん mailto:sage [2019/10/15(火) 11:28:33.47 ID:m0jqn6iGp.net]
ああ、パスワードスキミングするならむしろそうじゃないと都合悪いかw

129 名前:デフォルトの名無しさん mailto:sage [2019/10/15(火) 11:50:04.39 ID:+5Q+C2RJM.net]
必死でない頭絞って
やっと浮かんだ用途がそれなのか?
残念な人だこと…

130 名前:デフォルトの名無しさん mailto:sage [2019/10/15(火) 14:23:13.71 ID:fSd1Dwex0.net]
この手の質問に対する定番の回答やぞ

131 名前: mailto:sage [2019/10/15(Tue) 20:41:28 ID:5pSAXFzm0.net]
1ヶ月位VBAを触って今日Visual Studio Express 2017をインストールしました
せっかくならVBAの癖が着く前に…と思ったのですが、VBAで書いたプログラムに互換性は無いでしょうか?

132 名前:デフォルトの名無しさん [2019/10/15(火) 20:52:55.04 ID:Hz78fwHza.net]
>>131
ここ、C#のスレだよw
VBAは20年前に死亡宣告されたVB6の親戚。
今のVisual Studioに入ってるVisual Basicとは似てるけど別物。
もちろんC#とは似ても似つかない

133 名前:デフォルトの名無しさん mailto:sage [2019/10/15(火) 20:54:38.84 ID:E2P2T6Cd0.net]
>>131
VBAとC#/VB.NETは別物

あとなんでVS2017のExpressをインストールしたのさ
わざわざ機能制限版のExpressを使うとかマゾプレイヤーかな?



134 名前: mailto:sage [2019/10/15(Tue) 21:03:51 ID:5pSAXFzm0.net]
>>132
1から勉強しなおしになるでしょうか?
Visual StudioでもC#を使えると思っていました

>>133
社内のライセンスとセキュリティの関係でExpressしかダメと言われてしまいました

135 名前: mailto:sage [2019/10/15(Tue) 21:13:12 ID:E/67JFVJ0.net]
SharpDevelop入れて、C#→vbかな

136 名前: mailto:sage [2019/10/15(Tue) 21:15:31 ID:n+UvEGVJ0.net]
>>134
質問の内容が変わっているよね
VBAで作ったものはVB.Netに手直し程度で動かせるようになるものができる場合もあるけどC#は書き方も完全に別物
ここで聞くより自分のPCで動かしてみたほうが早い

137 名前: mailto:sage [2019/10/15(Tue) 21:15:48 ID:h8W4Pu510.net]
>>135
そこはVisual Studio Codeやろ…

138 名前:デフォルトの名無しさん (アウアウウー Sa5b-YqqQ) [2019/10/15(Tue) 21:16:06 ID:Hz78fwHza.net]
>>134
C#を使えないなんて言ってないよw
VBAとC#は完全に別の言語だと言ってるだけ
VBAの知識はC#を覚える上でほとんど役に立たないよと

139 名前:デフォルトの名無しさん (ワッチョイ 972d-epSy) [2019/10/15(Tue) 21:20:18 ID:zMbku3w90.net]
用語と名付けルールについていくつか教えてください
まず、class Asdf{}の入れた物(Asdf asdf; でいうasdf)は、何と呼べばいいんですか?変数でいいのでしょうか?
また、Asdfの入ったものを自動プロパティで宣言したい場合、一文字めを大文字にすべきなのでしょうか?
Asdf Asdf{get; set;}なのか、Asdf asdf{get; set;}なのかどちらが正しいのでしょうか

140 名前: mailto:sage [2019/10/15(Tue) 21:23:27 ID:NTOFWHv0a.net]
>>139
Asdf asdf; のasdfは変数名でいい
プロパティ名はCamelCase(先頭大文字)にするのが慣習、自動実装プロパティかどうかは無関係

141 名前: mailto:sage [2019/10/15(Tue) 21:25:58 ID:5pSAXFzm0.net]
>>136
失礼しました
まずは色々と触ってみます

>>138
早とちりしてしまいました
基本から勉強してみます

ありがとうございます

142 名前:デフォルトの名無しさん (ワッチョイ 972d-epSy) [2019/10/15(Tue) 22:44:41 ID:zMbku3w90.net]
>>140
ありがとうございます
大文字かどうかは、クラス名とプロパティ名が一緒になってしまっていいのか結構疑問に思っていたのでスッキリしました

143 名前:デフォルトの名無しさん [2019/10/17(木) 01:03:06.25 ID:GTpPRCCe0.net]
Pythonでは文字列をコマンドとして実行するのにevalとexecの2つあるみたいですが
C#で文字列をコマンドとして実行するには、eval以外の関数はありますか?



144 名前: mailto:sage [2019/10/17(Thu) 01:25:51 ID:lbhPCdA40.net]
あるよ

145 名前:デフォルトの名無しさん (ワイーワ2 FF6a-uHRg) [2019/10/17(Thu) 09:37:45 ID:ewN8FeZ7F.net]
subprocess.popen
subprocess.call
subprocess.call_hogehoge
もっとあるぞ

146 名前:デフォルトの名無しさん (ワッチョイ 5fda-+VEO) [2019/10/17(Thu) 11:49:09 ID:qkwcuRdz0.net]
フォーム間でのデータの受け渡しを行うクールな方法を教えて下さい。
今は以下の2通りの方法ででやっています。
?互いの公開プロパティ(public get / private set)を参照しあう。
 (互いに相手フォームへの参照を通じて取得するので疎結合になり切れていない)
?データ保持用クラスを作って、そのインスタンスを参照する。
 (データ保持用クラスが増えまくって、だんだん管理困難になりそう)

147 名前: mailto:sage [2019/10/17(Thu) 12:12:42 ID:lbhPCdA40.net]
MQで結合

148 名前:デフォルトの名無しさん mailto:sage [2019/10/17(木) 12:32:44.65 ID:tq7j3RVK0.net]
MVCのM

149 名前:デフォルトの名無しさん mailto:sage [2019/10/17(木) 12:38:06.93 ID:p0JdpBwB0.net]
WpfやUWPなどではDIコンテナってものを使うのが流行りだが、WindowsFormsでも存在するそうだ
こっちは使ったことがないからお薦めはわからんがググって探してみるといい

まあクールってことならWindowsForms捨てるのも一つだね

150 名前: mailto:sage [2019/10/17(Thu) 13:00:04 ID:gr44XWYWM.net]
>>146
DB

151 名前:デフォルトの名無しさん mailto:sage [2019/10/17(木) 13:34:04.59 ID:gr44XWYWM.net]
>>149
WPFやUWP自体がほぼ全くと言っていいほど使われていないのに流行りも何も
DIコンテナは主にWebで利用されるもので、デスクトップアプリではあまり使われないよ
アプリの起動を遅くする原因になりやすいし、エンドユーザーにバイナリを直接配布するタイプのアプリではそもそも実装を差し替えたいというニーズ自体が稀だからね

152 名前: mailto:sage [2019/10/17(Thu) 15:08:30 ID:LDYcAoDdM.net]
DIコンテナはこの場合関係ないのでは?
結局素直に?でやるのがいいと思う

153 名前: mailto:sage [2019/10/17(Thu) 15:44:16 ID:U3fOiqzQ0.net]
>>146
クールな方法というか堅実・定石な方法
フォーム間のデータのやり取りなら?

相手のフォームに依存するとテスト時や改修時に困るでしょ
原則として相手の画面やクラスの事は知らないに越したことは無い

その設計でもデータ保持用クラスの管理が大変になることは無い
管理が大変になる場合は設計がおかしい
画面遷移の組合せ数分クラス作るとかアホなことすれば大変だろうけど



154 名前: mailto:sage [2019/10/17(Thu) 17:38:31 ID:xrf7PluH0.net]
wpfのCheckBoxについてですが、Contentに文字を設定するとその文字の表示範囲もチェックオンオフの感知範囲になってしまいます
これを無効にして純粋にチェックボックスの□のみをクリック範囲にすることはできないのでしょうか?
CheckBoxのContentに文字を設定するのではなく、横にTextBlockを置くなどしないと無理でしょうか?

155 名前: mailto:sage [2019/10/17(Thu) 17:46:05 ID:Cw+SiV+E0.net]
うん

156 名前: mailto:sage [2019/10/17(Thu) 17:47:00 ID:LBezDrpM0.net]
>>154
手段としてはその通りだと思う。

しかし、あのちっさいチェックボックスに正確にマウスを当てないと反応しないってのは、
使い勝手からするとどうかと思う。誤クリックが多いというなら、そもそもの配置場所が悪い

157 名前: mailto:sage [2019/10/17(Thu) 17:49:21 ID:f5CxH478a.net]
>>154
PreviewMouseDownイベントを追加して
e.OriginalSourceからVisualTreeHelper.GetParent()でVisualTreeを親方向にたどっていき
途中に"checkBoxBorder"というNameのBorderがあればe.Handled=true;で無効化出来るかもしれない
出来るかもしれないが一般的にCheckBoxはテキスト部分をクリックしてもオンオフ出来るものだから
その一般的な挙動を逸脱するよっぽどの理由がなければ止めておいたほうがいい

158 名前: mailto:sage [2019/10/17(Thu) 18:14:20 ID:xrf7PluH0.net]
>>156>157
ありがとうございます
具体的にはListBox内にCheckBoxを配置しており、チェックとは別にListBoxから選択時に多少のインフォメーションを表示するといった形にしたいためContentも含めると誤クリックが発生してしまいます
とりあえずは文字とCheckBoxは分離する方向でやってみたいと思います

159 名前: mailto:sage [2019/10/17(Thu) 19:36:38 ID:ukHDmGyB0.net]
先日C#を始めたものです
Hello Worldを記述出来ました
エクセル等のオフィスソフトに対応している初心者向けのサイトは無いでしょうか?
よろしくお願いします

160 名前: mailto:sage [2019/10/17(Thu) 19:50:38 ID:fD4z5OoEd.net]
C#てオフィスを使って処理したいってこと?

161 名前:デフォルトの名無しさん mailto:sage [2019/10/17(木) 20:50:59.23 ID:ukHDmGyB0.net]
C#を使ってエクセル等を操作したいと思っています

162 名前:デフォルトの名無しさん mailto:sage [2019/10/17(木) 20:53:46.00 ID:35zh2Zdy0.net]
>>161
Microsoft Visual C# .NET から Microsoft Excel を自動化する方法
https://docs.microsoft.com/ja-jp/office/troubleshoot/office-developer/automate-excel-from-visual-c
こういう意図でC#を使う人は少ないと思うからそういうサイトもあまりないのでは

163 名前:デフォルトの名無しさん mailto:sage [2019/10/17(木) 20:54:08.32 ID:U+7e/yzz0.net]
>>161
epplusが手軽だと個人的には思う
サイトはいくつかあるからググって



164 名前:デフォルトの名無しさん mailto:sage [2019/10/17(木) 21:33:04.59 ID:tq7j3RVK0.net]
VSTO
https://docs.microsoft.com/ja-jp/visualstudio/vsto/create-vsto-add-ins-for-office-by-using-visual-studio
https://docs.microsoft.com/ja-jp/visualstudio/vsto/walkthroughs-using-excel
https://blogs.msdn.microsoft.com/office_client_development_support_blog/tag/vsto/

COMとVSTOの違いはググって

165 名前:デフォルトの名無しさん [2019/10/17(木) 22:09:06.50 ID:o4qw9kXC0.net]
ClosedXML
https://www.atmarkit.co.jp/ait/articles/1810/24/news016.html

166 名前:デフォルトの名無しさん mailto:sage [2019/10/17(木) 23:15:21.70 ID:U3fOiqzQ0.net]
Closed便利よね
バグ踏んだら面倒だけど

167 名前:デフォルトの名無しさん [2019/10/17(木) 23:18:37.31 ID:fKr8aC1m0.net]
プロパティで、StringをDateTimeのようにnull許容できるようにしたいのですが、可能でしょうか?

public DateTime? test1 { get; set; } ← 可
public String? test2 { get; set; } ← 不可

DapperでDB操作してるのですが、DBゆえにnullがあるのでどうしたものかと

168 名前:デフォルトの名無しさん mailto:sage [2019/10/17(木) 23:30:47.28 ID:+xa644SFa.net]
C#8.0の新しい文法を使う意図だったら「#nullable enable」のディレクティブをつけないとnull許容参照型にならないよ
そうでなければ、stringは参照型だから?をつけずとも普通にnull許容

169 名前:デフォルトの名無しさん mailto:sage [2019/10/18(金) 00:25:33.50 ID:C4vTbpVj0.net]
>>162
>>163
ありがとうございます

170 名前:デフォルトの名無しさん mailto:sage [2019/10/18(金) 00:26:47.30 ID:C4vTbpVj0.net]
>>164
>>165
ありがとうございます

171 名前:デフォルトの名無しさん mailto:sage [2019/10/18(金) 04:48:07.86 ID:7fyCEFV70.net]
>>162
帳票作成でC#使うなんてよくある話だろ

172 名前:デフォルトの名無しさん mailto:sage [2019/10/18(金) 17:37:44.07 ID:P+E8yzNh0.net]
>>168
Stringはそもそもnull許容なのですね
Dapperでデータ取れないのは別の事情がありそうなので調査してみます
ありがとうございます

173 名前:デフォルトの名無しさん mailto:sage [2019/10/18(金) 20:34:45.07 ID:L2N4rS5+M.net]
>>171
帳票作成でC#を使うこととC#でExcelを操作することはかなり違うけどな



174 名前:デフォルトの名無しさん mailto:sage [2019/10/18(金) 20:43:02.28 ID:7fyCEFV70.net]
>>173
>>162が正にそれだろ

175 名前:デフォルトの名無しさん mailto:sage [2019/10/18(金) 21:35:27.82 ID:1VxWd/yq0.net]
>>174
日本語が理解できないのか?
> こういう意図でC#を使う人は少ないと思うからそういうサイトもあまりないのでは
>>162はその少ないサイトって話だろ…

176 名前:デフォルトの名無しさん mailto:sage [2019/10/18(金) 21:44:11.74 ID:nML+rjlo0.net]
データを取得したんですが
第三正規系までできません。

こちらのデータを第三正規系にお願いします。
第一正規系はやりました。

https://i.imgur.com/RruyoYQ.png


おすし名,おすしID,店舗ID,価格,データ取得日時,店舗名,おすし説明,色,分類,大きさ
まぐろ赤身,MGR-0000,KRA,120,2019/10/18,くら寿司,さっぱりうまい。上出来,鮮やか,赤身,小さい
まぐろ赤身,MGR-0001,SSR,110,2019/10/18,スシロー,こってりうまい。おすすめ,濃い,赤身,大きい
まぐろ赤身,MGR-0002,HMZ,90,2019/10/18,はま寿司,まずい。食えたもんじゃない,汚い,赤身,小さい
まぐろ赤身(漬け),MGRZ-0000,KRA,140,2019/10/18,くら寿司,漬け。さっぱりうまい。上出来,鮮やか,漬け,大きい
まぐろ赤身(漬け),MGRZ-0001,SSR,130,2019/10/18,スシロー,漬け。こってりうまい。おすすめ,濃い,漬け,大きい
まぐろ赤身(漬け),MGRZ-0001,HMZ,100,2019/10/18,はま寿司,漬け。まずい。食えたもんじゃない,汚い,漬け,小さい

177 名前:デフォルトの名無しさん mailto:sage [2019/10/18(金) 21:51:06.59 ID:7fyCEFV70.net]
>>175
日本語理解できてないのはそっちやろ…

>>174は「帳票作成でC#を使うこととC#でExcelを操作することはかなり違う」に対する反論

178 名前:デフォルトの名無しさん mailto:sage [2019/10/18(金) 22:22:58.75 ID:bjYJELO9a.net]
>>176
このスレのタイトルを3回声に出して読んでみようか

179 名前:デフォルトの名無しさん mailto:sage [2019/10/18(金) 22:51:19.49 ID:1VxWd/yq0.net]
>>177
頭大丈夫?
それとも
> 帳票作成でC#使うなんてよくある話だろ
をごまかしたくて必死なの?w

180 名前:デフォルトの名無しさん mailto:sage [2019/10/18(金) 22:55:16.71 ID:esIPpiBW0.net]
心底くだらない喧嘩だな

181 名前:デフォルトの名無しさん mailto:sage [2019/10/18(金) 23:23:01.26 ID:j4uMIQLH0.net]
禿同

182 名前:デフォルトの名無しさん mailto:sage [2019/10/19(土) 01:23:21.24 ID:yK8AYG0c0.net]
>>179
頭大丈夫?

183 名前:デフォルトの名無しさん mailto:sage [2019/10/19(土) 06:44:10.57 ID:a0xT/TLW0.net]
>>182
鸚鵡返ししかできないならROMってりゃいいのに…w



184 名前:デフォルトの名無しさん mailto:sage [2019/10/19(土) 06:45:15.42 ID:fpN8ACwhd.net]
>>183
しつこい

185 名前:デフォルトの名無しさん mailto:sage [2019/10/19(土) 08:06:58.91 ID:a0xT/TLW0.net]
>>184
夜中までレスしてる>>182に言ってやれよw

186 名前:デフォルトの名無しさん mailto:sage [2019/10/19(土) 09:10:08.70 ID:yK8AYG0c0.net]
>>183
まだいたのかw

187 名前: mailto:sage [2019/10/19(Sat) 09:47:58 ID:mgwE5Z4r0.net]
どこもかしこもマウントレスバトルばかり
なぜひとはあらそってしまうのか…sigh…

188 名前:デフォルトの名無しさん mailto:sage [2019/10/19(土) 09:51:09.39 ID:g+81+wWe0.net]
しかも、内容が思いっきりくだらない
マウントを取るためだけにレスをしたとしか思えないくだらなさ

189 名前:デフォルトの名無しさん mailto:sage [2019/10/19(土) 10:37:10.93 ID:a0xT/TLW0.net]
>>186
>>184w

190 名前:デフォルトの名無しさん mailto:sage [2019/10/19(土) 17:32:49.19 ID:WQwZNfDO0.net]
C#は見かけ上は一見C++に似たような顔で欺いたVBだな。

191 名前:デフォルトの名無しさん [2019/10/19(土) 18:32:57.19 ID:BH051H7O0.net]
すまんが、インターフェイスとオートプロパティーとがよくわから人だけどさあ
interface IPerson{string Name();}
class Person : IPerson {public string Name{get=>"Taro";}}
これじゃなんでIPerson.Name();を実装したことにならないの?正しくはどうすればよかんべえ?

192 名前:デフォルトの名無しさん [2019/10/19(土) 18:36:03.37 ID:BH051H7O0.net]
自分で気づいて今インターフェイスをstring Name{get;}にしてみたらできた
すまん、191のは無視してくれ・・・・

193 名前:デフォルトの名無しさん mailto:sage [2019/10/19(土) 18:39:04.57 ID:qmet2mEe0.net]
インターフェイスがメソッドで実装がクラスだからダメ



194 名前:デフォルトの名無しさん mailto:sage [2019/10/19(土) 18:39:28.35 ID:qmet2mEe0.net]
×実装がクラス
○実装がプロパティ

195 名前:デフォルトの名無しさん (ワッチョイ e334-V+wO) [2019/10/21(月) 20:48:34 ID:Q380rRZI0.net]
ListViewをLargeImageListとして使って、かつ画像は非同期的に読み込んで反映させていきたいんだけど、
ImageListを変更しても画像が差し変わらない。アイテムを選択したりすると変わる。
差し替え後に強制的に反映させるにはListViewをRefleshするしかない?

196 名前:デフォルトの名無しさん (ワッチョイ 5fda-S3Tg) mailto:sage [2019/10/21(月) 22:28:12 ID:WYoX45rO0.net]
ListViewItemのVMにINotifyPropertyChanged実装しとらんのか?

197 名前:デフォルトの名無しさん (ワッチョイ 4bda-PVzv) mailto:sage [2019/10/21(月) 22:36:01 ID:gFaZXUyV0.net]
RichTextBox.Textプロパティに数MBの文字列をセットすると
5秒くらいフォームがフリーズするので
Task/async/await的なコードを試したのですが
別スレッドからコントロールにはアクセスできないと怒られ
それではとInvokeメソッドを使ってみるも
今度はアクセスで怒られない代わりにまたフリーズ。

上手いこと非同期でTextプロパティにセットする
方法はありますかね。

198 名前:デフォルトの名無しさん mailto:sage [2019/10/21(月) 22:46:01.22 ID:/X8txQrc0.net]
>>197
数MBの文字列程度でフリーズした経験はないけど、その環境でフリーズするのなら非同期にしても解決はしないよ
Invoke使おうがその文字列の処理にそれだけかかるのだからどうしようもない
非同期にするのは処理中にキャンセルするとか他のGUIからの入力処理をする目的じゃないと

199 名前:デフォルトの名無しさん (ワッチョイ 4bda-PVzv) mailto:sage [2019/10/21(月) 23:04:39 ID:gFaZXUyV0.net]
ありがとうございます
そういう回答がいただけただけでも助かります
違った角度からの解決策を考えます

200 名前:デフォルトの名無しさん (アウアウウー Sa43-WFp/) [2019/10/21(月) 23:10:37 ID:VNGEIVP2a.net]
>>197
やったことないけどこれかね
https://stackoverflow.com/questions/47438631/c-sharp-open-form-in-a-new-thread-or-task

201 名前:デフォルトの名無しさん (ワッチョイ d201-4js2) mailto:sage [2019/10/22(火) 00:05:51 ID:QfoZv31s0.net]
>>197
WPF?

202 名前:デフォルトの名無しさん mailto:sage [2019/10/22(火) 10:07:09.79 ID:YHA3BCJ70.net]
事情が許されるなら、俺ならRTFをHTML変換してブラウザコントロールで表示させるけどね

203 名前:デフォルトの名無しさん mailto:sage [2019/10/22(火) 13:25:27.23 ID:K+KsF9ms0.net]
試してなくて妄想だけけど、SuspendLayout/ResumeLayoutとか?



204 名前:デフォルトの名無しさん [2019/10/22(火) 14:13:07.80 ID:d9ySxcs9a.net]
UIスレッド自体が輻輳してるんだからそんなことしても無意味w

別のプロセスか別のUIスレッドで動作させるか、
あるいは小分けにしてちょっとずつ更新するしかないと思うよ。

205 名前:デフォルトの名無しさん mailto:sage [2019/10/22(火) 19:15:02.64 ID:ZcCp4/Eg0.net]
クラス継承の意義がイマイチ分かりません
継承したいクラスをフィールドに持たせ、共通して呼び出したいものはインターフェースとして定義するではダメなのでしょうか?
単にその両者をいっぺんにやるためにあるという理解で良いんでしょうか?

206 名前:デフォルトの名無しさん mailto:sage [2019/10/22(火) 19:40:35.35 ID:i9vhc7D5M.net]
>>205
それで正しいよ
現代のオブジェクト指向においては継承は基本的に悪であって、極力使うべきではない

207 名前:デフォルトの名無しさん mailto:sage [2019/10/22(火) 20:13:37.49 ID:N0Z1aA+u0.net]
継承が悪ってww

208 名前:デフォルトの名無しさん [2019/10/22(火) 20:19:18.17 ID:d9ySxcs9a.net]
アポロ13って映画に「何のために作られたかではなく、何に使えるかが重要」って台詞が出てくるけど、
意義とか考えるのは(重要だとは思うけど)後回しにして、どういう使い方ができるかに
注視した方がいいよw

あと、オブジェクト指向関係で教条主義的なことを言う奴の話は眉に唾して聞いた方がいいw
これほんと

209 名前:デフォルトの名無しさん mailto:sage [2019/10/22(火) 20:23:35.17 ID:r8U+7Z6M0.net]
.NET Framework は悪の塊だったのか

210 名前:デフォルトの名無しさん mailto:sage [2019/10/22(火) 21:06:42.53 ID:CFL/N7o/d.net]
>>206
継承が悪ワロタ

211 名前:デフォルトの名無しさん mailto:sage [2019/10/22(火) 21:09:14.91 ID:V41RXtJo0.net]
>>209
悪の帝国Microsoft製だししょうがないなw

212 名前:デフォルトの名無しさん mailto:sage [2019/10/22(火) 21:18:38.74 ID:mNMm3WnU0.net]
あ〜熊の力〜身に付けた〜
正義のヒーロー

213 名前:デフォルトの名無しさん mailto:sage [2019/10/22(火) 21:22:00.43 ID:5xlDZDfD0.net]
毛深いヒーローだな



214 名前:デフォルトの名無しさん mailto:sage [2019/10/22(火) 21:25:50.97 ID:EpnXDCZ50.net]
Windows上でVisual Studioを立ち上げて.Netアプリ開発をする以上
お前も悪の帝国の軍門に下って生きるしかないのだ

215 名前:デフォルトの名無しさん mailto:sage [2019/10/22(火) 22:38:30.26 ID:QfoZv31s0.net]
>>205
例えばフレームワークが用意してるControllerクラスを継承して20個くらい個別のコントローラーを作る場合と
個別のコントローラーにControllerクラスを持たせて呼び出しを委譲できるようにする場合
前者はカスタマイズしたい部分だけ書けばいいけど
後者はControllerの機能を呼び出すためにはすべてのクラスに委譲メソッドを用意する必要がある

Controllerのメソッドを20個呼び出したいなら20x20で400個委譲メソッド定義をしないといけないしテストもしないといけない
自動生成することも可能だけどそれを考慮しても必要になる労力とコンポジションで得られる柔軟性が見合わない

それぞれメリット・デメリットあるからそれを判断して使い分けるのが良いと思う

216 名前:デフォルトの名無しさん mailto:sage [2019/10/22(火) 23:18:54.36 ID:HqQPrhiP0.net]
正しいと思うけど、継承のメリットを論じている段階でその例はたぶん通じない。ちんぷんかんぷんだと思うよ

217 名前:デフォルトの名無しさん mailto:sage [2019/10/22(火) 23:34:28.25 ID:bvw0XH6G0.net]
そういえばc#になってから継承なんて使った覚えがないな

218 名前:デフォルトの名無しさん mailto:sage [2019/10/22(火) 23:58:38.64 ID:R7p1RKV4a.net]
継承を使うとしても、KeyedCollectionみたいな用意されたabstractクラスの具象を書くくらいかな
クラシックなWinForms/WebFormsと格闘するなら継承ありきなんだろうけど

219 名前:デフォルトの名無しさん mailto:sage [2019/10/23(水) 00:02:52.61 ID:rbcKcx270.net]
>>217
Formクラスの継承しないの?

220 名前:デフォルトの名無しさん [2019/10/23(水) 01:24:57.24 ID:m9ZvUGV10.net]
List型からカンマ区切りの文字列にしたいのですが、先頭や最後にカンマがくっついて欲しくありません
こう言う場合ってどう書くのですか?

string s = "";
int i = 0;
foreach(var l in data){
   if(i == 0) i = 1;
   else s += ",";
   s += l.ToString();
}

自分なりにも書いてみたのですがなんか素人感が半端ないです
どうか正しいかっこいい書き方を教えてください、お願いします

221 名前:デフォルトの名無しさん mailto:sage [2019/10/23(水) 01:45:41.03 ID:r6mLYpNF0.net]
var s = string.Join(",", data);

222 名前:デフォルトの名無しさん mailto:sage [2019/10/23(水) 08:41:29.15 ID:cIthmx8S0.net]
Goは>>205のような考えで継承廃止したんじゃなかったっけ?
コーディングコスト削減メリットよりも階層複雑化によるデメリットの方が大きいから、やるならインターフェースでやれって考え方だったと思う
天下のグーグルがそう言ってるからには継承が悪という考えもあながち全否定は出来ない

223 名前:デフォルトの名無しさん mailto:sage [2019/10/23(水) 08:46:57.96 ID:tuL+TD2TM.net]
var s = (data.FirstOrDefault() ?? "").ToString()
foreach(var l in data.Skip(1))
s += "," + l

var s = ""
foreach(var l in data)
s += "," + l
s = s.SubString(1)



224 名前:デフォルトの名無しさん mailto:sage [2019/10/23(水) 09:10:24.37 ID:9MFdyPJfa.net]
>>222
Rustもそうだね
MSやAWSが最近推してる

225 名前:デフォルトの名無しさん mailto:sage [2019/10/23(水) 09:26:46.08 ID:s4ZmhUIr0.net]
null許容型に属性のrangeが有効か否かを調べたいんだけど、msdnを見ても書かれてない
こういうときってどうやって調べるの??

226 名前:デフォルトの名無しさん mailto:sage [2019/10/23(水) 09:57:02.37 ID:N3BHKY3G0.net]
Rangeということは「最小値と最大値」の範囲内かどうかなわけで
nullが範囲外なのは自明だからそもそも意味がなくね?
nullは特別に範囲内ってのなら「最小値と最大値」であるRangeじゃなくて他の方法で表現せざるを得ないよね

227 名前:デフォルトの名無しさん mailto:sage [2019/10/23(水) 10:43:58.06 ID:s4ZmhUIr0.net]
>>226
単純にnull許容型にrangeの属性を付与できるか否かってだけが知りたい
それを調べようとしてもmsdnに記載が見つからないって話

これはtestが0-100になるように有効だろうけど
[range(0,100)]
int test

このrangeは有効なのか?って話
int?にはrangeは無効で101とか入れれますよーとかはないよねって調べたい
[range(0,100)]
int? test

228 名前:デフォルトの名無しさん mailto:sage [2019/10/23(水) 11:17:48.75 ID:V6w3FSpA0.net]
>>227
range属性自体はstringに対してだろうが付与出来るし、変数への代入を阻止するものじゃない
それが有効かどうかはrange属性を使って検証する側の問題

229 名前:デフォルトの名無しさん mailto:sage [2019/10/23(水) 11:52:11.96 ID:mg9LIwfN0.net]
ASPについて質問です
MVCにできてWebFormsじゃできないことってどんなのがありますか?

230 名前:デフォルトの名無しさん [2019/10/23(水) 12:06:02.89 ID:uTmD95wkr.net]
>>229
できる出来ないの基準は?
既存コントロール使わないで全部時前で処理するなら、出来ないことが重い浮かばない

231 名前:デフォルトの名無しさん mailto:sage [2019/10/23(水) 12:08:21.81 ID:ixA2IUmYp.net]
おまえには出来ないって基準だと思うよ。

232 名前:デフォルトの名無しさん mailto:sage [2019/10/23(水) 12:24:26.05 ID:rCWJ/rTC0.net]
原理的に出来ないことは無いが大変さが違う

それこそMVCで組みづらいとか
EFとの相性とか
WebAPI作りたいとか
他言語や環境と混ぜづらいとか
つぶしが効かないとか

まあ新規でWebFormsはやめとけと

233 名前:デフォルトの名無しさん mailto:sage [2019/10/23(水) 12:39:33.45 ID:9MFdyPJfa.net]
>>229
WebFormsは.NET Coreおよび.NET 5以降ではサポートされない
今から新規に使ってはいけない



234 名前:デフォルトの名無しさん mailto:sage [2019/10/23(水) 12:51:59.22 ID:s8yqv2t40.net]
>>227
Required属性とnon-nullable型の関係を確認すればいいと思う
https://docs.microsoft.com/ja-jp/aspnet/core/mvc/models/validation#required-attribute

235 名前:デフォルトの名無しさん [2019/10/23(水) 13:28:03.53 ID:m9ZvUGV10.net]
>>221
>>223
ありがとう
こんなの全然知らなかったよ

236 名前:デフォルトの名無しさん mailto:sage [2019/10/23(水) 13:33:09.12 ID:mg9LIwfN0.net]
>>233
あざます

237 名前:デフォルトの名無しさん mailto:sage [2019/10/23(水) 21:40:38.12 ID:F0j44unH0.net]
System.Collections.ConcurrentにConcurrentListはないようですが、スレッドセーフなListはSyncronizedCollectionを使っておけということなんでしょうか?

238 名前:デフォルトの名無しさん mailto:sage [2019/10/23(水) 22:41:24.14 ID:MpJkuZYiM.net]
>>237
ConcurrentListが無いのは、Listは外部ロックを使わない並行処理との相性が悪いからだろう
追加と参照のみならいいが、削除や途中への挿入があるとインデックスがほとんど意味を持たなくなってしまう
インデックスが指してる要素が他のスレッドによる変更の影響で突然コロコロ変わったら使い物にならないのは容易に想像できるだろ?
SynchronizedCollectionを使うとかそういう話じゃなくて、Listインターフェイスの設計が本質的に並行処理と相容れないんだよ

239 名前:デフォルトの名無しさん mailto:sage [2019/10/24(木) 08:41:52.53 ID:vvI6h2Gc0.net]
あるソフト使ってて、これ使いたいなって機能があるんだけど、なんて検索かけたらいいのか分からないので知っている人いたら教えてください。
WindowsフォームアプリでVisualStudio2015で開発しています。


[欲しい機能]
例えばWindow内が横3段に分かれいるとすると

------------△---------------

みたいに境界が表示されててそこをクリックすると部分的に隠したり、表示させたりできる機能



今作ってるアプリが監視系で画面上に常駐するので、出来るだけWindow内の邪魔なボタンとかは隠しておきたいのでこの機能が欲しいです。
知ってる方いたらよろしくお願いします。

240 名前:デフォルトの名無しさん mailto:sage [2019/10/24(木) 09:07:13.70 ID:1uX6E7L9M.net]
>>238
> 追加と参照のみならいいが、削除や途中への挿入があるとインデックスがほとんど意味を持たなくなってしまう
それマルチスレッドじゃなくても起きるだろ

241 名前:デフォルトの名無しさん mailto:sage [2019/10/24(木) 09:13:17.80 ID:EafWDMiv0.net]
>>239
折りたたみできるpanel とかそんな感じ?

242 名前:デフォルトの名無しさん mailto:sage [2019/10/24(木) 09:20:52.19 ID:/Cd29/CTM.net]
>>240
程度問題だよ
マルチスレッドなら尚更問題になるのは明らかだろ
結局、インデックスに依存する一連の操作の単位で外部ロックを取る必要があるから、concurrentである意味がない

243 名前:デフォルトの名無しさん mailto:sage [2019/10/24(木) 09:51:08.72 ID:1uX6E7L9M.net]
>>242
バカなの?
インデックス使って途中挿入削除されたら問題なるのはマルチスレッドには関係ない
そもそも挿入削除してるのにインデックスで処理するのがおかしいと気づけ



244 名前:デフォルトの名無しさん mailto:sage [2019/10/24(木) 10:07:31.16 ID:/Cd29/CTM.net]
>>243
シングルスレッドでの同期処理ならプログラマが意図しないタイミングで変更が加えられる可能性は少ないだろう
そもそも途中挿入しないならConcurrentBagでいいよね
自分で答え出てるじゃん

245 名前:デフォルトの名無しさん mailto:sage [2019/10/24(木) 10:16:49.04 ID:1uX6E7L9M.net]
本質を理解できない馬鹿に説明しても無駄なことがよくわかるなw

246 名前:デフォルトの名無しさん mailto:sage [2019/10/24(木) 10:31:37.86 ID:/Cd29/CTM.net]
同意するわw

247 名前:デフォルトの名無しさん mailto:sage [2019/10/24(木) 10:50:43.90 ID:8vd5prrh0.net]
>>239
SplitContainer

248 名前:デフォルトの名無しさん [2019/10/24(木) 10:58:17.20 ID:xs21harXa.net]
>>239
XPの時代のエクスプローラーのタスクパネルみたいなUIだと思うけど
たぶん標準では存在しない

折り畳みできるコンテナを自分で作れば、それを別のPanelの中に入れ子にして
AnchorとDockをうまく設定すれば似たようなことは一応できると思う。

PanelじゃなくてFlowLayoutPanelを使ってもいいかもしれないが、
たぶんかえって使いづらくなりそう

249 名前:デフォルトの名無しさん mailto:sage [2019/10/24(木) 10:58:42.47 ID:ey5VOEQr0.net]
>>241
そうそう折りたたみって言葉がしっくりきます。


試しに「折りたたみ panel」あたりで検索したらやりたい事が出来そうなサイトが見つけられました。
SplitContainerとクリックイベントを使ってどうにか出来そうです。

また、境界部分にも三角形△などの目印を付けるやり方が載ってるサイトも見つかりました。


いいヒントになりました、ありがとうございます^^

250 名前:デフォルトの名無しさん mailto:sage [2019/10/24(木) 10:59:35.93 ID:mB9UhJoj0.net]
>>247
>>248
ありがとうございます!

251 名前:デフォルトの名無しさん [2019/10/24(木) 11:57:49.13 ID:ABhN6CSmF.net]
>>239
Collapse
Accordion

252 名前:デフォルトの名無しさん mailto:sage [2019/10/24(木) 21:14:55.46 ID:00cf/jHw0.net]
頭に0個の参照って表示されてる関数が無数にあるんですが、これ要するに全く使われてないってことですよね
全部消してしまいたい……と思ったのですが実行する中でその関数が呼び出されるような可能性ってあったりするんでしょうか

253 名前:デフォルトの名無しさん mailto:sage [2019/10/24(木) 21:35:06.52 ID:VqWeglU2r.net]
リフレクションとかで呼べば参照カウントされないんじゃない



254 名前:デフォルトの名無しさん mailto:sage [2019/10/24(木) 21:45:06.56 ID:B+sGouls0.net]
なんかのライブラリとかで、publicで公開してるやつとかか?

255 名前:デフォルトの名無しさん mailto:sage [2019/10/24(木) 22:06:02.66 ID:Eph2jaDU0.net]
複数のパネルをドラッグドロップできるようにしたんだけど
マウスが別のパネルに重なったときにパネルがいれかわってしまうんだけど
これを防ぐにはどうしたらいい?

256 名前:デフォルトの名無しさん mailto:sage [2019/10/24(木) 22:14:48.43 ID:yaJ1dO+n0.net]
>>255
「パネル」をドラッグドロップしている?
一番上または必要なパネル以外のドラッグドロップを受け付けないようにしたら

257 名前:デフォルトの名無しさん mailto:sage [2019/10/24(木) 22:17:00.79 ID:WLXJ5XGy0.net]
>>255
マウスダウンで「掴む」じゃん
マウスドラッグで「移動」するじゃん
マウスアップで「置く」じゃん

ドラッグ中の処理は移動なのにどうしてマウスダウンで掴んだやつ
以外が動いちゃうん?

258 名前:デフォルトの名無しさん mailto:sage [2019/10/24(木) 23:01:06.74 ID:yaJ1dO+n0.net]
マウスがパネルに触れた時点でフォーカス変わったりしているとかだろ
最低限の動きするミニマムコード使って検証する方がここで聞くより解決しやすいと思うがね
そこでわからなかったらそのミニマムコード出してまた質問したらここの人も答えやすい

259 名前:デフォルトの名無しさん mailto:sage [2019/10/24(木) 23:02:09.24 ID:00cf/jHw0.net]
>>253
あーなるほどでもそんな上等な書き方出来る人が作ったわけじゃないからなさそうですね

>>254
他の似たようなソフト作る時に使ったソースコードそのまま組み込んだっぽいですね見た感じ

260 名前:元99 mailto:sage [2019/10/25(金) 14:57:42.75 ID:V0o5IG+qM.net]
>>252
まあ普通はコメントにするよね

261 名前:デフォルトの名無しさん [2019/10/25(金) 22:28:16.88 ID:7rgagi6Z0.net]
List<(string, int)> list;があった場合、listの中からlist.item2が最大の要素(string, int)を得るにはどうすればいいのですか?
var l = list.Max(x=>x.Item2);みたいにしたいのですが、int型が帰ってきてしまいます

262 名前:デフォルトの名無しさん mailto:sage [2019/10/25(金) 23:07:56.88 ID:GWerdevt0.net]
OrderByDescending.FirstOrDefault

263 名前:デフォルトの名無しさん mailto:sage [2019/10/25(金) 23:14:44.18 ID:5pdqBhsBa.net]
>>262だと計算量のオーダーが増える
先に Max で最大のItem2 (maxItem2)を求めておいて list.First(x => x.Item2 == maxItem2) のほうがマシ



264 名前:デフォルトの名無しさん mailto:sage [2019/10/25(金) 23:23:22.26 ID:6061P7ry0.net]
何度も呼ぶときウゼーから関数にしろよ

265 名前:デフォルトの名無しさん mailto:sage [2019/10/25(金) 23:42:07.16 ID:5pdqBhsBa.net]
経験上、こういう汎用的すぎるユーティリティ関数を自作して多用するのはお勧めしない
個人開発ならいいけど、多人数での開発になると新しいメンバーとの間で記述方法に差異を有む原因になり、結果的に負債化していくんだよ
ダサくてもこういうのは毎回ベタに書いたほうがいい

266 名前:デフォルトの名無しさん mailto:sage [2019/10/25(金) 23:48:20.10 ID:FLPxIKHC0.net]
最大値持ってるタプルが複数あったら?

267 名前:デフォルトの名無しさん mailto:sage [2019/10/25(金) 23:50:57.19 ID:j4bjfcPpd.net]
>>266
逆にどうして欲しいの?

268 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 00:25:28.36 ID:ZMkO6rZZ0.net]
>>267
知らんがな

269 名前:デフォルトの名無しさん [2019/10/26(土) 00:58:09.61 ID:rff7tW+R0.net]
>>262-265
どの方法も一見正攻法ではないように見えるため、人に教えてもらわないことには勇気を出して書けませんでした
ありがとうございます

270 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 12:56:29.17 ID:D4rlG2Pr0.net]
>>265
計算量のオーダー気にしてんだろ?
他の奴が違う書き方して増えたら大変じゃん
あ、どうでもよかった?

271 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 13:18:11.26 ID:sfokePbj0.net]
素直に
int max = list.Max(tuple => tuple.Item2);
var maxValueItems = list.Where(tuple => tuple.Item2 == max);
でいいじゃん
int に重複がない前提なら Dictionary 化した方が捗る

272 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 14:40:36.29 ID:+20I9h0L0.net]
なんかいいロガー知らない?
3つのテキストに警告・注意・情報がそれぞれ安全に吐けるロガー






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<74KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef