X



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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん (ワッチョイ 1e7b-qjLW)
垢版 |
2019/10/07(月) 20:16:17.93ID:9eyAES450
!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/
■コードを貼る場合は↓を使いましょう。
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
0072デフォルトの名無しさん (ワッチョイ 9701-UsEV)
垢版 |
2019/10/11(金) 16:55:31.32ID:BNgoH63S0
Properties.Settings.Defaultについて教えてください
DataGridViewのセル幅の設定を保存したいのですが、いい方法はあるでしょうか?

セルが20個ほど並んでるのですが、Settings.SettingsにはInt[]の配列が選べないし
プロパティバインディングも項目がありません、たくさんのIntを保存するにはどうしたらよいでしょか?
0073デフォルトの名無しさん (アウアウウー Sa5b-YqqQ)
垢版 |
2019/10/11(金) 16:55:34.98ID:Qe/y/ERba
>>66
謎だねw
#ifディレクティブやコメントアウトを選択しなかった理由は
IDEでシンボル検索した時に引っかかるようにしたかったから、とかも考えられるけど、
まあ多分単純に書いた人がアホなだけだろうw

仮にそうう理由があるとしてもfalseなんてリテラルをそのまま書くのは意味が分からん
0079デフォルトの名無しさん (ワッチョイ 9701-UsEV)
垢版 |
2019/10/11(金) 19:16:25.09ID:BNgoH63S0
>>75
レスサンクス
カンマで区切って、文字列を数値にして
今それっぽい事をやってみたんですが、なにやら挙動があやしい

>>76
れすさんくす
やはり文字列になってしまうのでしょか、int[]あれば便利なのに
0083デフォルトの名無しさん (ワッチョイ 9701-UsEV)
垢版 |
2019/10/11(金) 20:21:50.98ID:BNgoH63S0
>>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());
}
こんなんです、これは捨てます
009136 (ワッチョイ 976e-qVzB)
垢版 |
2019/10/11(金) 22:30:13.36ID:SS1U2hzP0
遅くなりましたがありがとうございました。とりあえずprivateでやってみようと思います。
しかし恥ずかしながらローカル関数って初めて知りました……こんなんあったのか
0099デフォルトの名無しさん (ワッチョイ 97ad-Gs6/)
垢版 |
2019/10/12(土) 11:45:16.39ID:vesGJIfT0
Java 用語だったのか。 < ローカルクラス
クラス内だけじゃなくてメソッド内でも作れるみたいだけど。
匿名クラスは無名クラスだと思ってた自分。


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

static なメンバ変数の修飾子というか、
static でないメンバ変数の this.[変数名] の this に当たるようなのってなにかないですか。
[クラス名].[変数名] で ok なのだけど、[クラス名] の部分を固定でやる方法ないかなと。
0113デフォルトの名無しさん (アウアウイー Sacb-FzDa)
垢版 |
2019/10/13(日) 11:55:56.33ID:f3TGJJSYa
えーそんなわけないでしょと思って確認したら
ColumnsのDataGridViewColumnCollectionは非ジェネリクスのIListしか実装してないのか・・・
DataGridViewってVS2005以前の書き方で実装されてるのね

となると、かっこ悪いけどキャストをかませて
for (var c in DataGridView1.Columns) { (c as DataGridViewColumn).MinimumWidth=20; }
と書くくらいしかないか、>>103のとおりDataGridView.Columnsを変数にするくらいしかなさそう
0115デフォルトの名無しさん (ワッチョイ 9701-Wib4)
垢版 |
2019/10/13(日) 12:28:10.86ID:Fykc0AcJ0
抽象クラスとインターフェースの使い分けのコツを具体例で教えて下さい!
0118デフォルトの名無しさん (アウアウウー Sa5b-Cvo3)
垢版 |
2019/10/13(日) 12:43:25.13ID:2Iz5cpana
>>116
使い分ける必要はない
常にインターフェイスを使う、でいいよ
抽象クラスはインターフェイスを使った上で、どうしても実装の大部分が重複してしまうような場合に稀に使うことがある、という程度のもの
全く使わなくても問題はない
0119デフォルトの名無しさん (ワッチョイ 97ad-Gs6/)
垢版 |
2019/10/13(日) 12:58:41.62ID:BB7naElC0
>>100
所属クラスを示す汎用のエイリアスのようなものがないかなーと。
でも using static ディレクティブ自体を知らなかったので勉強になりました。これを定義すれば結果として同じ事出来るし。

ありがとう。
0131デフォルトの名無しさん (ワッチョイ 7745-/roT)
垢版 |
2019/10/15(火) 20:41:28.27ID:5pSAXFzm0
1ヶ月位VBAを触って今日Visual Studio Express 2017をインストールしました
せっかくならVBAの癖が着く前に…と思ったのですが、VBAで書いたプログラムに互換性は無いでしょうか?
0132デフォルトの名無しさん (アウアウウー Sa5b-YqqQ)
垢版 |
2019/10/15(火) 20:52:55.04ID:Hz78fwHza
>>131
ここ、C#のスレだよw
VBAは20年前に死亡宣告されたVB6の親戚。
今のVisual Studioに入ってるVisual Basicとは似てるけど別物。
もちろんC#とは似ても似つかない
0136デフォルトの名無しさん (ワッチョイ ff7b-v59O)
垢版 |
2019/10/15(火) 21:15:31.52ID:n+UvEGVJ0
>>134
質問の内容が変わっているよね
VBAで作ったものはVB.Netに手直し程度で動かせるようになるものができる場合もあるけどC#は書き方も完全に別物
ここで聞くより自分のPCで動かしてみたほうが早い
0138デフォルトの名無しさん (アウアウウー Sa5b-YqqQ)
垢版 |
2019/10/15(火) 21:16:06.96ID:Hz78fwHza
>>134
C#を使えないなんて言ってないよw
VBAとC#は完全に別の言語だと言ってるだけ
VBAの知識はC#を覚える上でほとんど役に立たないよと
0139デフォルトの名無しさん (ワッチョイ 972d-epSy)
垢版 |
2019/10/15(火) 21:20:18.71ID:zMbku3w90
用語と名付けルールについていくつか教えてください
まず、class Asdf{}の入れた物(Asdf asdf; でいうasdf)は、何と呼べばいいんですか?変数でいいのでしょうか?
また、Asdfの入ったものを自動プロパティで宣言したい場合、一文字めを大文字にすべきなのでしょうか?
Asdf Asdf{get; set;}なのか、Asdf asdf{get; set;}なのかどちらが正しいのでしょうか
0142デフォルトの名無しさん (ワッチョイ 972d-epSy)
垢版 |
2019/10/15(火) 22:44:41.51ID:zMbku3w90
>>140
ありがとうございます
大文字かどうかは、クラス名とプロパティ名が一緒になってしまっていいのか結構疑問に思っていたのでスッキリしました
0143デフォルトの名無しさん (ワッチョイ 1663-GUq/)
垢版 |
2019/10/17(木) 01:03:06.25ID:GTpPRCCe0
Pythonでは文字列をコマンドとして実行するのにevalとexecの2つあるみたいですが
C#で文字列をコマンドとして実行するには、eval以外の関数はありますか?
0145デフォルトの名無しさん (ワイーワ2 FF6a-uHRg)
垢版 |
2019/10/17(木) 09:37:45.19ID:ewN8FeZ7F
subprocess.popen
subprocess.call
subprocess.call_hogehoge
もっとあるぞ
0146デフォルトの名無しさん (ワッチョイ 5fda-+VEO)
垢版 |
2019/10/17(木) 11:49:09.47ID:qkwcuRdz0
フォーム間でのデータの受け渡しを行うクールな方法を教えて下さい。
今は以下の2通りの方法ででやっています。
@互いの公開プロパティ(public get / private set)を参照しあう。
 (互いに相手フォームへの参照を通じて取得するので疎結合になり切れていない)
Aデータ保持用クラスを作って、そのインスタンスを参照する。
 (データ保持用クラスが増えまくって、だんだん管理困難になりそう)
0149デフォルトの名無しさん (ワッチョイ 9242-S3Tg)
垢版 |
2019/10/17(木) 12:38:06.93ID:p0JdpBwB0
WpfやUWPなどではDIコンテナってものを使うのが流行りだが、WindowsFormsでも存在するそうだ
こっちは使ったことがないからお薦めはわからんがググって探してみるといい

まあクールってことならWindowsForms捨てるのも一つだね
0151デフォルトの名無しさん (ドコグロ MMea-tIsl)
垢版 |
2019/10/17(木) 13:34:04.59ID:gr44XWYWM
>>149
WPFやUWP自体がほぼ全くと言っていいほど使われていないのに流行りも何も
DIコンテナは主にWebで利用されるもので、デスクトップアプリではあまり使われないよ
アプリの起動を遅くする原因になりやすいし、エンドユーザーにバイナリを直接配布するタイプのアプリではそもそも実装を差し替えたいというニーズ自体が稀だからね
0153デフォルトの名無しさん (ワッチョイ e338-m7UD)
垢版 |
2019/10/17(木) 15:44:16.62ID:U3fOiqzQ0
>>146
クールな方法というか堅実・定石な方法
フォーム間のデータのやり取りならA

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

その設計でもデータ保持用クラスの管理が大変になることは無い
管理が大変になる場合は設計がおかしい
画面遷移の組合せ数分クラス作るとかアホなことすれば大変だろうけど
0154デフォルトの名無しさん (ワッチョイ 16a7-S3Tg)
垢版 |
2019/10/17(木) 17:38:31.11ID:xrf7PluH0
wpfのCheckBoxについてですが、Contentに文字を設定するとその文字の表示範囲もチェックオンオフの感知範囲になってしまいます
これを無効にして純粋にチェックボックスの□のみをクリック範囲にすることはできないのでしょうか?
CheckBoxのContentに文字を設定するのではなく、横にTextBlockを置くなどしないと無理でしょうか?
0156デフォルトの名無しさん (ワッチョイ 5fda-S3Tg)
垢版 |
2019/10/17(木) 17:47:00.63ID:LBezDrpM0
>>154
手段としてはその通りだと思う。

しかし、あのちっさいチェックボックスに正確にマウスを当てないと反応しないってのは、
使い勝手からするとどうかと思う。誤クリックが多いというなら、そもそもの配置場所が悪い
0157デフォルトの名無しさん (アウアウウー Sa43-ptFq)
垢版 |
2019/10/17(木) 17:49:21.17ID:f5CxH478a
>>154
PreviewMouseDownイベントを追加して
e.OriginalSourceからVisualTreeHelper.GetParent()でVisualTreeを親方向にたどっていき
途中に"checkBoxBorder"というNameのBorderがあればe.Handled=true;で無効化出来るかもしれない
出来るかもしれないが一般的にCheckBoxはテキスト部分をクリックしてもオンオフ出来るものだから
その一般的な挙動を逸脱するよっぽどの理由がなければ止めておいたほうがいい
0158デフォルトの名無しさん (ワッチョイ 16a7-S3Tg)
垢版 |
2019/10/17(木) 18:14:20.41ID:xrf7PluH0
>>156>157
ありがとうございます
具体的にはListBox内にCheckBoxを配置しており、チェックとは別にListBoxから選択時に多少のインフォメーションを表示するといった形にしたいためContentも含めると誤クリックが発生してしまいます
とりあえずは文字とCheckBoxは分離する方向でやってみたいと思います
0159デフォルトの名無しさん (ワッチョイ f345-UkKt)
垢版 |
2019/10/17(木) 19:36:38.52ID:ukHDmGyB0
先日C#を始めたものです
Hello Worldを記述出来ました
エクセル等のオフィスソフトに対応している初心者向けのサイトは無いでしょうか?
よろしくお願いします
0167デフォルトの名無しさん (ワッチョイ 1ee9-1jLk)
垢版 |
2019/10/17(木) 23:18:37.31ID:fKr8aC1m0
プロパティで、StringをDateTimeのようにnull許容できるようにしたいのですが、可能でしょうか?

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

DapperでDB操作してるのですが、DBゆえにnullがあるのでどうしたものかと
0168デフォルトの名無しさん (アウアウイー Sa87-sprL)
垢版 |
2019/10/17(木) 23:30:47.28ID:+xa644SFa
C#8.0の新しい文法を使う意図だったら「#nullable enable」のディレクティブをつけないとnull許容参照型にならないよ
そうでなければ、stringは参照型だから?をつけずとも普通にnull許容
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況