TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼
すべての言語を判定する計算機構
MSX-BASICの奥義を伝授するスレ
リファクタリングをただのコード修正と思ってる人へ
datファイルを共有するP2Pソフト o2on 17dat
ATL/WTL Part7
静的型付け言語の潜在開発生産性は今の100倍 ×5
VBで作られた有名なアプリって何?
Lisp Scheme Part41
【C++】マイナーGUIツールキット
Ruby>>>>>Java

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


1 :2019/10/07 〜 最終レス :2019/12/11
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)

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

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


3 :
c# windowsフォームにファイルをドラッグ&ドロップしたらファイルのパスを取得みたいなコードはネットにありますし、そのままビルドしたら正常に動作しましたので良いのですが、
ファイルをドラッグした瞬間にパスを取得することは出来ますか?

4 :
はい

5 :
うん

6 :
>>3
普通にやると一番早く取得できるのはDragEnterやDragOverイベントかな
もしドラッグを始めた瞬間に取得したいのなら
全プロセスに対してOle32.dllのDoDragDrop呼び出しをフックして
プロセス間通信でパスを通知、とすれば出来るのかもしれないけど初心者がすることではなさそう

7 :
質問失礼します
textboxに入力を終えて確定したことを知り自動的に
フォーカスをtextboxから別の決まったコントロール(buttonとか)に移動したいのですが
フォーカス移動のコードをどこにどう書いたらいいのか分かりません

8 :
>>7
ケースバイケースでは?
同じ機能のTextBoxが一つしかなく、他で使いまわす予定もないなら
Formに書けば十分。

複数使いたかったり汎用的で他で使いまわしたいなら

(a) TextBoxを継承してそこに書く
(b) UseControlにTextBoxとButtonをペアで配置してUseControlにフォーカス移動のコードを書く

このいずれか。

9 :
>>8
ありがとうございます
なるほど、(a)かなあ
ところでtextboxの入力が確定したことをどうやって取得すればいいのかも分からないんです
それも教えてください、すみません!

10 :
あ、それはTextプロパティが変化したかどうかを見ればいいのか?
でもそれじゃイベントハンドラがどうしたらいいのか分からない
Textの変更を始めたというイベントハンドラって取得できるんですかね?

11 :
それも駄目か
やっぱり何らかの方法で変更が終了して
リターンを押して確定したことを取得しないといけないよね?

12 :
わかった _TextChangedか!
ありがとうございました

13 :
昔だったらkillforcusなんだけど
c#はなんだろう?

14 :
あった多分これで検索すれば

c# textbox validated event

15 :
WPFアプリにてタスクバープレビューの右上の閉じるボタンから閉じた時のイベントを取得することは出来ないのでしょうか?
上記の方法で閉じると一見終了されたように見えてもプロセスは残ってしまうため、メインウィンドウの閉じるボタンを押したときに呼ばれる後処理メソッドを呼ばせたいのですが

16 :
こっちの環境では普通にClosedイベント発生してるし特殊な終わり方はしてないようだが…

17 :
どういう方法で閉じようと、ClosingやClosedは経由するよな

18 :
C# + Oracleで自社内向け業務アプリ作ることになったんだけど、..net coreでなく、net frameworkのWinFormsでいいよね?
ユーザーはせいぜい1200人程度なんだけど、.net coreランタイム入れる手間を考えたくない。

WinFormsって結構大きなデメリットになったりする?

19 :
Formで複数のNumericUpDownを使ってます
値の変化はValueChangedイベントを使用してます

あるNumericUpDownを変化すると別のも連動します
値を変える場合一時的にイベントハンドラを無効にしてます

今は-=で無効にしてますが他にイベントハンドラを無効にする方法はありますか?

20 :
勘違いしてるみたいだけど.NET coreはインストール不要(自己完結型)でビルドできるよ

21 :
CoreってGUI作れるようになったん?

22 :
core調べてみたら便利そうだな
調べるうちにだんだんUWPとWPFの違いが分からんようになった
WPFでUWPのコントロール使えるなら、UWPは制限きついだけか?

23 :
Win限定なら作れる
でも現実にはある程度のユーザー数のある業務アプリなら.NET Framework の方が遥かに配布は楽だよ
ClickOnceが使えるからね
.NET CoreはSCDができるのはいいけど、配布や更新に関して良くも悪くも単なるexeができる以上のサポートは何もない
ヘタにzipで配っちゃったら後で地獄を見ることになる

24 :
あと、今から業務アプリを新規に作るんならそもそもクライアントアプリではなくWebにすべきだ
Webなら配布の心配なんか最初から要らないし、.NET開発におけるメインストリームだから情報も豊富だし将来性もある

25 :
>>23
MSIX

26 :
>>19
フラグ使ってイベントハンドラの入り口でreturn

27 :
質問なんですが
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 :
PersonにはINotifyPropertyChangedを実装して
各プロパティのsetでPropertyChangedイベントを発生させる

要素の追加削除に対応するならList<T>の代わりにBindingList<T>を使う

29 :
>>28
さんくすです
何やらうまくいきそうな感じですが、実際に書くのは難しそうです
少し調べてみます

30 :
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 :
・extBox txt = (TextBox)(rw.Cells[2]).Controls[0];

32 :
>>31
>>30です。
ダメです。〜.Controls.Countが0なので、インデックスの範囲外になってしまいます。

33 :
ProcessクラスにはDispose()があるようですが、
var processes = Process.GetProcesses();
とした時点で上記のProcess[]内のProcessたちを全てDispose()しないとメモリリークなどしてしまうのでしょうか?
それとも実際にハンドルなどを参照したものだけDispose()すれば良いのでしょうか?

34 :
>>33
https://referencesource.microsoft.com/#System/services/monitoring/system/diagnosticts/Process.cs,1554
ReferenceSourceを見ると
GetProcessesByName()が内部でGetProcesses()を使っていて、それの戻り値配列に使わない場合はDispose()しているから
GetProcesses()を直接呼び出している場合でも戻り値配列の各ProcessをDispose()したほうが良さそう

GC管理下にあるからDisposeを呼び忘れていても、ファイナライザが呼び出されて少なくともメモリーは回収されるとは思う

35 :
>>34
ありがとうございます
一応全く使わないProcessもDisposeしておくことにします

36 :
クラスA内にインスタンスメソッドBがあったとして、長くなってしまったから一部をメソッドCとして外に出すとします
このCはBから呼び出される以外どこからも参照されません。本当にちょっと分離するためだけに分けているのです
このときCの修飾子はどうするのがいいのでしょうか。publicは論外として、ただ単にprivateでいいんですかね
staticとかつけた方がいいですか?クラス内で変な使われ方するのを防いだ方がいいかなとか思ったのですが

37 :
そのソースを自分しか触らないのであればprivateでいいと思う
自分で作っているんだから変な使われ方をされることもないだろ?

もし他の開発者が触る可能性があるんならローカル関数を使えばOK

38 :
privateにしてコメントに注意書きしておけばいいと思うが
メソッド名の頭にアンダースコアつけるとか
DoSomethingFromBOnly()みたいな名前にしておくとか

39 :
全部public
クラスAを継承したクラスA2で
メソッドBをちょっと変えた
メソッドB2を作りたいときに
メソッドCを呼べない欠陥クラス

40 :
>>36
普通にprivateにすればOK。
誤用されるリスクは分割したメソッドに固有の問題じゃない。
それは命名と抽象化が不適切ならどのメソッドにも起こりうる。
だから分割したら誤用されるんじゃないか、って発想はかなり変だ。

staticはインスタンスメンバーを使わないなら付けるべきだが、付けたからって
誤用されるリスクが減るわけじゃない。

ローカル関数は、

(1) 分割したメソッドを何度も呼び出す。
(2) その時に必ず同じ変数を引数として渡す(それが冗長に感じる)

こういうケースじゃなきゃ積極的に使う理由はない気がする。

41 :
メソッドBからしか正常に動作しないメソッドCという構図ならそもそも設計が怪しい
メソッドB以外から使われることがないだろうくらいの感じなら
万一使われても別に困らないしprivateで問題ない

42 :
ローカル関数を使いたがる奴は総じてレベルが低いね

43 :
グローバルおじさんが来たな

44 :
>>41
は?
>>39のケースで普通に困るだろ
ボケてんかよ

45 :
>>44
でもまあ拡張性に優れてないのは元からっぽいから、分けて書くことに始まった問題じゃないじゃん?

46 :
全部publicおじさんなんかどう見ても荒らしなんだからNGに放り込んどけ

47 :
>>39のケースを解決しようととりあえずprotectedにすればいいと思うだろ?

ところがメソッドB2の処理の途中に
クラスXの処理を絡ませなければならないことになった
しかし、クラスA2はクラスXを呼び出すと循環参照になってしまうためそれができない

なのでクラスEにメソッドB3を作成することになった

ときにメソッドCはprivateでは呼び出すことができない

ここまで解決しようとするとメソッドCはpublicにしておくしかない

そしてこれはよくあることだ

48 :
全部virtualだろ普通

49 :
皆さんは、Windowsノートパソコンで開発されてるのでしょうか?
それともsurface?MacBook Pro?iPad Pro?

プログラミング用にMacBookをすすめるサイトをよく見ますがC#ではやはりWindows機?
個人的にはThinkPadかなと思ってますが
皆さんはどんなもんですか

50 :
デスクトップだけど

51 :
>>47
> そしてこれはよくあることだ
ねーよ
よくあるとしたらお前の設計力が無さすぎ
そもそも
> メソッドBをちょっと変えた
> メソッドB2を作りたいときに
の時にBからB2をコピペして改変する時点でアホ丸出し

52 :
>>51
え?じゃあどうするん?
話の主旨とそれるけど
virtualにしてもやっぱりメソッドCは呼べんやろ
それで?
どうしたいって?

53 :
>>52
アホすぎる…
クラスAをベースクラスにして変更部分をvirtualで差し替えてA1(これが今までのA)とA2を作る
変更部分にCを呼ぶコードがあるならCはクラスA1にだけあればいい
変更部分にCを呼ぶコードがないならCはクラスAに置いとけばいい

54 :
>>53
え?なんかよくわからない
>>39みたいにかけない?
継承先でメソッドCを呼ぶ必要があるときどうだって?

55 :
>>50
うぅ・・

56 :
今開発中のもので初めて例外を補足しない強制終了が起こったのですが、原因としては唯一のunsafeであるstackallocだと思われます
var stack = count <= 20 ? stackalloc ulong[count] : new ulong[count];
動的なサイズですが上記のように一応サイズ制限はしていたのですが、ulong[20](160byte)程度でもスタックオーバーフローは起こり得るんでしょうか?

57 :
>>54
ちょっとは勉強しろよ...
両方の継承先で呼ぶ必要があるならベースに置けばいい
どっちか片方だけでいいなら必要とする継承先に置けばいいだけ
まともにコード書いたことないのか?

58 :
>>30です。
何かヒント頂けないでしょうか。

59 :
>>56
残りスタックが少なければ起こりうると思うけど例外吐いてないなら別の要因じゃないかと思う

60 :
>>56
イベントログを見てStackOverflowExceptionであることは確認した?

61 :
>>56
それコンパイル通るのか?
?の第2オペランドと第3オペランドの型があってないように見えるが

62 :
>>61
https://ufcpp.net/study/csharp/resource/span/#safe-stackalloc
C#7.2から出来るようになった
stackallocもnewも暗黙的にSpan<T>へ変換される

63 :
>>57
え?
意味不明

64 :
>>63
勉強不足すぎw
てか多態の基本だぞ

65 :
>>64
え?継承元のprivateって呼べないよね?

66 :
古いコードを見ているのですが
if (false) {// なにか処理}
がたっくさんあるんです。
到達できないコードが検出されましたって大量に出て当たり前だよ!って

仮に何か意味があるとしたらどんな理由が考えられるでしょうか
全部消せと思うのですが何かわたしの知らないテクニックだったらまずいですし

67 :
C#なら出来るでしょう

68 :
テスト用なんじゃね
必要なくなったからfalseにしているだけでは

69 :
テストとかデバッグ用の処理じゃないかな
#if falseにすれば警告は除去できると思う

70 :
>>65
継承元のprivateを呼ぶ話なんてしてないだろ
>>53をちゃんと読めよ

71 :
>>70
じゃあ、お前、一連の流れを理解しないでレス付けたな
もうようないわ

72 :
Properties.Settings.Defaultについて教えてください
DataGridViewのセル幅の設定を保存したいのですが、いい方法はあるでしょうか?

セルが20個ほど並んでるのですが、Settings.SettingsにはInt[]の配列が選べないし
プロパティバインディングも項目がありません、たくさんのIntを保存するにはどうしたらよいでしょか?

73 :
>>66
謎だねw
#ifディレクティブやコメントアウトを選択しなかった理由は
IDEでシンボル検索した時に引っかかるようにしたかったから、とかも考えられるけど、
まあ多分単純に書いた人がアホなだけだろうw

仮にそうう理由があるとしてもfalseなんてリテラルをそのまま書くのは意味が分からん

74 :
Java屋に呪いをかけられた。

75 :
>>72
カンマ区切りの文字列にでもするとか

76 :
json.netで文字列にして保存とか・・・そこまでやるならってのはナシで

77 :
>>71
バカの逆ギレかよ
念の為に言っておくけど元々>>47程度の要件では派生クラスからCを呼ぶなんて必要ないってことな
まあ君には一生理解できないかもしれないけどw

78 :
質問した人はもはや興味なくなってそう

79 :
>>75
レスサンクス
カンマで区切って、文字列を数値にして
今それっぽい事をやってみたんですが、なにやら挙動があやしい

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

80 :
splitで配列化出来るでしょ?

81 :
挙動が怪しいって言われてもコメントしようがない

82 :
カンマが全角半角交じりなのかもね

83 :
>>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 :
string.Join(",", array)で保存
array=text.Split(",").ToArray()で復元
スマホで書いたからミスってたらごめん

85 :
>>49
非光沢液晶のパソコンでプログラミングすることをすすめます。

86 :
>>84
さんくすです
それは答えですね、やってみます

87 :
これと違うの?
http://dobon.net/vb/dotnet/programing/mysettings.html#section5

88 :
>>47
本来クラスA2に置くべきメソッドB2を
循環参照になってしまうからという理由で別クラスに作るというアプローチに問題がある

89 :
不要な循環参照は避けるに越したことはないが
絶対に回避しないといけないものではないしな
設計的に妥当かどうか

90 :
>>87
さんくすです
型を増やすのは難しそうで、ちょっと敬遠してたのですが
いちどやってみます

91 :
遅くなりましたがありがとうございました。とりあえずprivateでやってみようと思います。
しかし恥ずかしながらローカル関数って初めて知りました……こんなんあったのか

92 :
なんとローカルクラスもあったりするぞ

93 :
ローカルクラスとか初めて聞いたんだが
Javaか何かと間違えてないか?

94 :
内部クラスつまりクラス内クラスのことかもな

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

95 :
匿名クラスのことだろ
LinQの関数の戻りとかでたまに使う

96 :
var hoge = new { Name = "Masashi", Hage = true };
こんな感じで宣言出來ると思う

97 :
class hoge {
  class fuga {}
  class moge {}
}
こういうやつ
呼び方は知らん

98 :
ローカルクラスwww

99 :
Java 用語だったのか。 < ローカルクラス
クラス内だけじゃなくてメソッド内でも作れるみたいだけど。
匿名クラスは無名クラスだと思ってた自分。


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

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

100 :
>>99
エイリアスとかこういう話?
using ディレクティブ
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/keywords/using-directive


100〜のスレッドの続きを読む
くだすれPython(超初心者用) その45【Ruby禁止】
C++/TemplateMetaProgramming
インデントを強制しても綺麗なコードにはなりません
画像処理 15枚目
ふらっと C#,C♯,C#(初心者用) Part137
Perlは10年後の2023年には消えてなくなる
(´・ω・`)人間はプログラムやがな
Visual Studio 2012 Part8
テストしにくいコードをテストする方法教えて下さい
2ちゃんねる互換P2P匿名掲示板の実装を考える 1
--------------------
宮下愛さん「みんな、愛してるよ!愛だけに!」2.4
ピティナっ子[全国切符1枚目] [無断転載禁止]&#169;2ch.net・
【奨学金の返済】企業が支援の動き
【陸自八戸駐屯地・海自八戸航空基地】
吉川隆二無責任事業承継コンサルタント詐欺
Jardin de 凛
【ComicREX】 閃乱カグラ ‐紅蓮の蛇‐ 1乳 【あおいまなぶ】
指貫・ゆびぬき・シンブル
【日本を象徴するあの富士山が】スカイライダーvol.10【我々を守ったんだ】
ドゥーム/ストーナー/スラッジ/70's総合 part.57
【芸能】 「欅坂46」 「日向坂46」所属事務所、18歳未満の 「夜間労働ルール」徹底で合意
昭和20年の1月〜8月に生まれた人
トッパン・フォームズってどうなのよ5
■■■熱い零細金型屋スレ 1 ■■■
 反日ユンソナR!2 
【福】模型店の福袋【鬱】14
【MADARA】 魍魎戦記 摩陀羅 part八【マダラ】
水泳教室「ピープル」(現コナミ)について☆2☆
【画像】ハンチョウ「焼肉屋でいきなりカルビ→カルビ→カルビ と食べてもいいんだよ」 [856517811]
【先端巨大症(acromegaly)に悩む人たち】 part1
TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼