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
2 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 20:48:30.84 ID:mLA0yK1I0.net] 乙
3 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 23:08:42.11 ID:4esZ9KBu0.net] c# windowsフォームにファイルをドラッグ&ドロップしたらファイルのパスを取得みたいなコードはネットにありますし、そのままビルドしたら正常に動作しましたので良いのですが、 ファイルをドラッグした瞬間にパスを取得することは出来ますか?
4 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 23:10:15.53 ID:WkkYpHG50.net] はい
5 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 23:12:19.73 ID:QEMDFqtE0.net] うん
6 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 23:36:38.52 ID:/mGKDAACa.net] >>3 普通にやると一番早く取得できるのはDragEnterやDragOverイベントかな もしドラッグを始めた瞬間に取得したいのなら 全プロセスに対してOle32.dllのDoDragDrop呼び出しをフックして プロセス間通信でパスを通知、とすれば出来るのかもしれないけど初心者がすることではなさそう
7 名前:デフォルトの名無しさん [2019/10/08(火) 10:56:30.06 ID:2mFIneqB0.net] 質問失礼します textboxに入力を終えて確定したことを知り自動的に フォーカスをtextboxから別の決まったコントロール(buttonとか)に移動したいのですが フォーカス移動のコードをどこにどう書いたらいいのか分かりません
8 名前:デフォルトの名無しさん [2019/10/08(火) 12:49:06.43 ID:8dDmccAua.net] >>7 ケースバイケースでは? 同じ機能のTextBoxが一つしかなく、他で使いまわす予定もないなら Formに書けば十分。 複数使いたかったり汎用的で他で使いまわしたいなら (a) TextBoxを継承してそこに書く (b) UseControlにTextBoxとButtonをペアで配置してUseControlにフォーカス移動のコードを書く このいずれか。
9 名前:デフォルトの名無しさん [2019/10/08(火) 13:32:25.44 ID:2mFIneqB0.net] >>8 ありがとうございます なるほど、(a)かなあ ところでtextboxの入力が確定したことをどうやって取得すればいいのかも分からないんです それも教えてください、すみません!
10 名前:デフォルトの名無しさん [2019/10/08(火) 13:36:59.57 ID:2mFIneqB0.net] あ、それはTextプロパティが変化したかどうかを見ればいいのか? でもそれじゃイベントハンドラがどうしたらいいのか分からない Textの変更を始めたというイベントハンドラって取得できるんですかね?
11 名前:デフォルトの名無しさん [2019/10/08(火) 13:52:29.59 ID:2mFIneqB0.net] それも駄目か やっぱり何らかの方法で変更が終了して リターンを押して確定したことを取得しないといけないよね?
12 名前:デフォルトの名無しさん [2019/10/08(火) 14:15:27.36 ID:2mFIneqB0.net] わかった _TextChangedか! ありがとうございました
13 名前:デフォルトの名無しさん mailto:sage [2019/10/08(火) 17:51:14.93 ID:Ibd7T+CL0.net] 昔だったらkillforcusなんだけど c#はなんだろう?
14 名前:デフォルトの名無しさん mailto:sage [2019/10/08(火) 17:55:02.19 ID:Ibd7T+CL0.net] あった多分これで検索すれば c# textbox validated event
15 名前:デフォルトの名無しさん mailto:sage [2019/10/09(水) 07:55:59.19 ID:/K0h5hCH0.net] WPFアプリにてタスクバープレビューの右上の閉じるボタンから閉じた時のイベントを取得することは出来ないのでしょうか? 上記の方法で閉じると一見終了されたように見えてもプロセスは残ってしまうため、メインウィンドウの閉じるボタンを押したときに呼ばれる後処理メソッドを呼ばせたいのですが
16 名前:デフォルトの名無しさん mailto:sage [2019/10/09(水) 08:46:37.34 ID:zdauYmXS0.net] こっちの環境では普通にClosedイベント発生してるし特殊な終わり方はしてないようだが…
17 名前:デフォルトの名無しさん mailto:sage [2019/10/09(水) 08:50:50.65 ID:Y6sBp1G90.net] どういう方法で閉じようと、ClosingやClosedは経由するよな
18 名前:デフォルトの名無しさん [2019/10/09(水) 16:30:31.60 ID:31sFMC5w0.net] C# + Oracleで自社内向け業務アプリ作ることになったんだけど、..net coreでなく、net frameworkのWinFormsでいいよね? ユーザーはせいぜい1200人程度なんだけど、.net coreランタイム入れる手間を考えたくない。 WinFormsって結構大きなデメリットになったりする?
19 名前:デフォルトの名無しさん mailto:sage [2019/10/09(水) 16:45:47.71 ID:KnJFPOSX0.net] Formで複数のNumericUpDownを使ってます 値の変化はValueChangedイベントを使用してます あるNumericUpDownを変化すると別のも連動します 値を変える場合一時的にイベントハンドラを無効にしてます 今は-=で無効にしてますが他にイベントハンドラを無効にする方法はありますか?
20 名前:デフォルトの名無しさん mailto:sage [2019/10/09(水) 16:47:28.10 ID:faTZyW/Hd.net] 勘違いしてるみたいだけど.NET coreはインストール不要(自己完結型)でビルドできるよ
21 名前:デフォルトの名無しさん mailto:sage [2019/10/09(水) 20:11:01.90 ID:bRqP1Lm30.net] CoreってGUI作れるようになったん?
22 名前:デフォルトの名無しさん mailto:sage [2019/10/09(水) 20:29:41.44 ID:BQgggoCY0.net] core調べてみたら便利そうだな 調べるうちにだんだんUWPとWPFの違いが分からんようになった WPFでUWPのコントロール使えるなら、UWPは制限きついだけか?
23 名前:デフォルトの名無しさん mailto:sage [2019/10/09(水) 20:36:12.50 ID:mYLA6NTyM.net] Win限定なら作れる でも現実にはある程度のユーザー数のある業務アプリなら.NET Framework の方が遥かに配布は楽だよ ClickOnceが使えるからね .NET CoreはSCDができるのはいいけど、配布や更新に関して良くも悪くも単なるexeができる以上のサポートは何もない ヘタにzipで配っちゃったら後で地獄を見ることになる
24 名前:デフォルトの名無しさん mailto:sage [2019/10/09(水) 20:42:22.99 ID:mYLA6NTyM.net] あと、今から業務アプリを新規に作るんならそもそもクライアントアプリではなくWebにすべきだ Webなら配布の心配なんか最初から要らないし、.NET開発におけるメインストリームだから情報も豊富だし将来性もある
25 名前:デフォルトの名無しさん mailto:sage [2019/10/09(水) 21:05:50.95 ID:DtVKrlfY0.net] >>23 MSIX
26 名前:デフォルトの名無しさん mailto:sage [2019/10/10(木) 01:06:13.89 ID:8ioradGx0.net] >>19 フラグ使ってイベントハンドラの入り口でreturn
27 名前:デフォルトの名無しさん mailto:sage [2019/10/10(木) 11:00:47.70 ID:EXU1k5cj0.net] 質問なんですが DataGridViewでテーブルを表示させてるんですが、中のデータを変更してもDataGridViewが更新できません class Person { public int ID; public string Name; } class PersonList { public List<Person> Data { get; } public PersonList() { new Person { ID = 1, Name = "tanaka" }; new Person { ID = 2, Name = "kimura" }; } } PersonList personList = new PersonList(); DataGridView1.DataSource = personList.Data; 今は無理やりデータソースを一度Nullにして消して再読み込みしていまうs private void Button1_Click(object sender, EventArgs e) { DataGridView1.DataSource = null; DataGridView1.DataSource = personList.Data; } これでは画面が一度消えてちらついたり、セル幅がリセットされたり、いまいちです DataGridViewの再読み込み再描画でうまい方法あるでしょうか?
28 名前:デフォルトの名無しさん mailto:sage [2019/10/10(木) 11:06:31.69 ID:dY7xsk310.net] PersonにはINotifyPropertyChangedを実装して 各プロパティのsetでPropertyChangedイベントを発生させる 要素の追加削除に対応するならList<T>の代わりにBindingList<T>を使う
29 名前:デフォルトの名無しさん mailto:sage [2019/10/10(木) 16:37:05.29 ID:EXU1k5cj0.net] >>28 さんくすです 何やらうまくいきそうな感じですが、実際に書くのは難しそうです 少し調べてみます
30 名前:デフォルトの名無しさん mailto:sage [2019/10/10(木) 19:37:58.48 ID:+cMNiUZhM.net] ASP.NET(VS2013) でWebアプリを作っています。 データベースから取得したデータをGridViewにBindしています。 特定のカラムを編集したくて OnDataBound イベントにて以下のようにしてTextBoxを追加しました。 foreach (GridViewRow rw in GridView1.Rows) { TextBox txt = new TextBox(); txt.Text = rw.Cells[2].Text; rw.Cells[2].Controls.Add(txt); } この後、TextBoxの値を取得したいのですが、 foreach (GridViewRow rw in GridView1.Rows) { TextBox txt = (TextBox)rw.Cells[2].Controls[0]; xx = txt.Text; } ではうまくいきません。Controlsがないようです。 どうすればTextBoxの値を取得できるでしょうか。
31 名前:デフォルトの名無しさん [2019/10/10(木) 19:39:53.55 ID:i+8+28k+F.net] ・extBox txt = (TextBox)(rw.Cells[2]).Controls[0];
32 名前:デフォルトの名無しさん mailto:sage [2019/10/10(木) 20:08:53.90 ID:aBdkLcoOM.net] >>31 >>30 です。 ダメです。〜.Controls.Countが0なので、インデックスの範囲外になってしまいます。
33 名前:デフォルトの名無しさん mailto:sage [2019/10/10(木) 21:29:45.48 ID:kk1CdJ+b0.net] ProcessクラスにはDispose()があるようですが、 var processes = Process.GetProcesses(); とした時点で上記のProcess[]内のProcessたちを全てDispose()しないとメモリリークなどしてしまうのでしょうか? それとも実際にハンドルなどを参照したものだけDispose()すれば良いのでしょうか?
34 名前:デフォルトの名無しさん mailto:sage [2019/10/10(木) 21:39:45.74 ID:afa4sCIxa.net] >>33 https://referencesource.microsoft.com/#System/services/monitoring/system/diagnosticts/Process.cs,1554 ReferenceSourceを見ると GetProcessesByName()が内部でGetProcesses()を使っていて、それの戻り値配列に使わない場合はDispose()しているから GetProcesses()を直接呼び出している場合でも戻り値配列の各ProcessをDispose()したほうが良さそう GC管理下にあるからDisposeを呼び忘れていても、ファイナライザが呼び出されて少なくともメモリーは回収されるとは思う
35 名前:デフォルトの名無しさん mailto:sage [2019/10/10(木) 21:49:47.76 ID:kk1CdJ+b0.net] >>34 ありがとうございます 一応全く使わないProcessもDisposeしておくことにします
36 名前:デフォルトの名無しさん mailto:sage [2019/10/10(木) 21:51:48.13 ID:IMCrZqO+0.net] クラスA内にインスタンスメソッドBがあったとして、長くなってしまったから一部をメソッドCとして外に出すとします このCはBから呼び出される以外どこからも参照されません。本当にちょっと分離するためだけに分けているのです このときCの修飾子はどうするのがいいのでしょうか。publicは論外として、ただ単にprivateでいいんですかね staticとかつけた方がいいですか?クラス内で変な使われ方するのを防いだ方がいいかなとか思ったのですが
37 名前:デフォルトの名無しさん mailto:sage [2019/10/10(木) 22:11:44.95 ID:IquandTc0.net] そのソースを自分しか触らないのであればprivateでいいと思う 自分で作っているんだから変な使われ方をされることもないだろ? もし他の開発者が触る可能性があるんならローカル関数を使えばOK
38 名前:デフォルトの名無しさん [2019/10/10(木) 22:18:06.84 ID:BXM3vcse0.net] privateにしてコメントに注意書きしておけばいいと思うが メソッド名の頭にアンダースコアつけるとか DoSomethingFromBOnly()みたいな名前にしておくとか
39 名前:デフォルトの名無しさん mailto:sage [2019/10/10(木) 22:21:13.96 ID:hT7PmE+00.net] 全部public クラスAを継承したクラスA2で メソッドBをちょっと変えた メソッドB2を作りたいときに メソッドCを呼べない欠陥クラス
40 名前:デフォルトの名無しさん [2019/10/10(木) 22:26:58.12 ID:PsSxAeUca.net] >>36 普通にprivateにすればOK。 誤用されるリスクは分割したメソッドに固有の問題じゃない。 それは命名と抽象化が不適切ならどのメソッドにも起こりうる。 だから分割したら誤用されるんじゃないか、って発想はかなり変だ。 staticはインスタンスメンバーを使わないなら付けるべきだが、付けたからって 誤用されるリスクが減るわけじゃない。 ローカル関数は、 (1) 分割したメソッドを何度も呼び出す。 (2) その時に必ず同じ変数を引数として渡す(それが冗長に感じる) こういうケースじゃなきゃ積極的に使う理由はない気がする。
41 名前:デフォルトの名無しさん mailto:sage [2019/10/10(木) 23:44:04.64 ID:a+kHg1ZD0.net] メソッドBからしか正常に動作しないメソッドCという構図ならそもそも設計が怪しい メソッドB以外から使われることがないだろうくらいの感じなら 万一使われても別に困らないしprivateで問題ない
42 名前:デフォルトの名無しさん mailto:sage [2019/10/10(木) 23:49:12.95 ID:+/bzkuJ6a.net] ローカル関数を使いたがる奴は総じてレベルが低いね
43 名前:デフォルトの名無しさん [2019/10/10(木) 23:51:17.44 ID:mQn3Hgbj0.net] グローバルおじさんが来たな
44 名前:デフォルトの名無しさん mailto:sage [2019/10/10(木) 23:56:49.95 ID:hT7PmE+00.net] >>41 は? >>39 のケースで普通に困るだろ ボケてんかよ
45 名前:デフォルトの名無しさん [2019/10/10(木) 23:58:46.54 ID:mQn3Hgbj0.net] >>44 でもまあ拡張性に優れてないのは元からっぽいから、分けて書くことに始まった問題じゃないじゃん?
46 名前:デフォルトの名無しさん mailto:sage [2019/10/11(金) 00:18:02.53 ID:f+9us5CU0.net] 全部publicおじさんなんかどう見ても荒らしなんだからNGに放り込んどけ
47 名前:デフォルトの名無しさん mailto:sage [2019/10/11(金) 00:18:46.89 ID:vfhfRP3v0.net] >>39 のケースを解決しようととりあえずprotectedにすればいいと思うだろ? ところがメソッドB2の処理の途中に クラスXの処理を絡ませなければならないことになった しかし、クラスA2はクラスXを呼び出すと循環参照になってしまうためそれができない なのでクラスEにメソッドB3を作成することになった ときにメソッドCはprivateでは呼び出すことができない ここまで解決しようとするとメソッドCはpublicにしておくしかない そしてこれはよくあることだ
48 名前:デフォルトの名無しさん mailto:sage [2019/10/11(金) 00:26:16.32 ID:i87v0bN60.net] 全部virtualだろ普通
49 名前:デフォルトの名無しさん [2019/10/11(金) 06:13:02.24 ID:YbeJbbo90.net] 皆さんは、Windowsノートパソコンで開発されてるのでしょうか? それともsurface?MacBook Pro?iPad Pro? プログラミング用にMacBookをすすめるサイトをよく見ますがC#ではやはりWindows機? 個人的にはThinkPadかなと思ってますが 皆さんはどんなもんですか
50 名前:デフォルトの名無しさん mailto:sage [2019/10/11(金) 06:47:08.88 ID:MFeQoEVg0.net] デスクトップだけど
51 名前:デフォルトの名無しさん mailto:sage [2019/10/11(金) 07:23:14.81 ID:e5VBdiYBM.net] >>47 > そしてこれはよくあることだ ねーよ よくあるとしたらお前の設計力が無さすぎ そもそも > メソッドBをちょっと変えた > メソッドB2を作りたいときに の時にBからB2をコピペして改変する時点でアホ丸出し
52 名前:デフォルトの名無しさん mailto:sage [2019/10/11(金) 07:54:18.02 ID:vfhfRP3v0.net] >>51 え?じゃあどうするん? 話の主旨とそれるけど virtualにしてもやっぱりメソッドCは呼べんやろ それで? どうしたいって?
53 名前:デフォルトの名無しさん mailto:sage [2019/10/11(金) 08:18:01.09 ID:e5VBdiYBM.net] >>52 アホすぎる… クラスAをベースクラスにして変更部分をvirtualで差し替えてA1(これが今までのA)とA2を作る 変更部分にCを呼ぶコードがあるならCはクラスA1にだけあればいい 変更部分にCを呼ぶコードがないならCはクラスAに置いとけばいい
54 名前:デフォルトの名無しさん mailto:sage [2019/10/11(金) 08:20:42.62 ID:vfhfRP3v0.net] >>53 え?なんかよくわからない >>39 みたいにかけない? 継承先でメソッドCを呼ぶ必要があるときどうだって?
55 名前:デフォルトの名無しさん [2019/10/11(金) 08:24:45.95 ID:blacN5wca.net] >>50 うぅ・・
56 名前:デフォルトの名無しさん mailto:sage [2019/10/11(金) 08:43:13.37 ID:Q3FyvZZg0.net] 今開発中のもので初めて例外を補足しない強制終了が起こったのですが、原因としては唯一のunsafeであるstackallocだと思われます var stack = count <= 20 ? stackalloc ulong[count] : new ulong[count]; 動的なサイズですが上記のように一応サイズ制限はしていたのですが、ulong[20](160byte)程度でもスタックオーバーフローは起こり得るんでしょうか?
57 名前:デフォルトの名無しさん mailto:sage [2019/10/11(金) 08:56:19.70 ID:e5VBdiYBM.net] >>54 ちょっとは勉強しろよ... 両方の継承先で呼ぶ必要があるならベースに置けばいい どっちか片方だけでいいなら必要とする継承先に置けばいいだけ まともにコード書いたことないのか?
58 名前:デフォルトの名無しさん mailto:sage [2019/10/11(金) 08:56:32.12 ID:01d3zJlsM.net] >>30 です。 何かヒント頂けないでしょうか。
59 名前:デフォルトの名無しさん mailto:sage [2019/10/11(金) 09:01:19.07 ID:w9BsPIYw0.net] >>56 残りスタックが少なければ起こりうると思うけど例外吐いてないなら別の要因じゃないかと思う
60 名前:デフォルトの名無しさん mailto:sage [2019/10/11(金) 09:06:03.62 ID:Nij9ynML0.net] >>56 イベントログを見てStackOverflowExceptionであることは確認した?
61 名前:デフォルトの名無しさん mailto:sage [2019/10/11(金) 09:46:04.72 ID:ZRjHQIQqM.net] >>56 それコンパイル通るのか? ?の第2オペランドと第3オペランドの型があってないように見えるが
62 名前:デフォルトの名無しさん mailto:sage [2019/10/11(金) 10:32:44.13 ID:4B4iU4j0a.net] >>61 https://ufcpp.net/study/csharp/resource/span/#safe-stackalloc C#7.2から出来るようになった stackallocもnewも暗黙的にSpan<T>へ変換される
63 名前:デフォルトの名無しさん mailto:sage [2019/10/11(金) 11:58:36.03 ID:y81cSpJS0.net] >>57 え? 意味不明
64 名前:デフォルトの名無しさん mailto:sage [2019/10/11(金) 12:32:45.04 ID:e5VBdiYBM.net] >>63 勉強不足すぎw てか多態の基本だぞ
65 名前:デフォルトの名無しさん mailto:sage [2019/10/11(金) 12:59:48.32 ID:47sbrrFf0.net] >>64 え?継承元のprivateって呼べないよね?
66 名前:デフォルトの名無しさん mailto:sage [2019/10/11(金) 13:49:55.26 ID:R9rR1P0/M.net] 古いコードを見ているのですが if (false) {// なにか処理} がたっくさんあるんです。 到達できないコードが検出されましたって大量に出て当たり前だよ!って 仮に何か意味があるとしたらどんな理由が考えられるでしょうか 全部消せと思うのですが何かわたしの知らないテクニックだったらまずいですし
67 名前:デフォルトの名無しさん mailto:sage [2019/10/11(金) 13:49:59.05 ID:V+fiNkQ50.net] C#なら出来るでしょう
68 名前:デフォルトの名無しさん mailto:sage [2019/10/11(金) 13:51:26.84 ID:IXdSVzcC0.net] テスト用なんじゃね 必要なくなったからfalseにしているだけでは
69 名前:デフォルトの名無しさん mailto:sage [2019/10/11(金) 14:01:31.76 ID:w9BsPIYw0.net] テストとかデバッグ用の処理じゃないかな #if falseにすれば警告は除去できると思う
70 名前:デフォルトの名無しさん mailto:sage [2019/10/11(金) 14:50:33.17 ID:Y/pxrYXGM.net] >>65 継承元のprivateを呼ぶ話なんてしてないだろ >>53 をちゃんと読めよ
71 名前:デフォルトの名無しさん mailto:sage [2019/10/11(金) 16:11:04.13 ID:RwnMXNoM0.net] >>70 じゃあ、お前、一連の流れを理解しないでレス付けたな もうようないわ
72 名前:デフォルトの名無しさん mailto:sage [2019/10/11(金) 16:55:31.32 ID:BNgoH63S0.net] Properties.Settings.Defaultについて教えてください DataGridViewのセル幅の設定を保存したいのですが、いい方法はあるでしょうか? セルが20個ほど並んでるのですが、Settings.SettingsにはInt[]の配列が選べないし プロパティバインディングも項目がありません、たくさんのIntを保存するにはどうしたらよいでしょか?
73 名前:デフォルトの名無しさん [2019/10/11(金) 16:55:34.98 ID:Qe/y/ERba.net] >>66 謎だねw #ifディレクティブやコメントアウトを選択しなかった理由は IDEでシンボル検索した時に引っかかるようにしたかったから、とかも考えられるけど、 まあ多分単純に書いた人がアホなだけだろうw 仮にそうう理由があるとしてもfalseなんてリテラルをそのまま書くのは意味が分からん
74 名前:デフォルトの名無しさん mailto:sage [2019/10/11(金) 17:05:59.65 ID:V+fiNkQ50.net] Java屋に呪いをかけられた。
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 >>184 w
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つのテキストに警告・注意・情報がそれぞれ安全に吐けるロガー