ふらっと C#,C♯,C#(初心者用) Part147
■ このスレッドは過去ログ倉庫に格納されています
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください
>>980を踏んだ人は新スレを建てて下さい。>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■前スレ
ふらっと C#,C♯,C#(初心者用) Part146
https://mevius.5ch.net/test/read.cgi/tech/1576069931/
■関連スレ
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 >>207
そうです。
子フォームも親フォームと同様にタイトルバーの下に独自のメニューバーを持たせたい場合の話です。 >>208
SDIではなく、複数の子ウィンドウを作りたいのです。 >>206
読んだんですが、該当する箇所は無いようです。
有れば教えてください。 >>209
親のMenuStripのAllowMerge = falseだね
デフォでマージされないはずだと思ってたけど勘違いだった >>213
親Formの AllowMerge を falseにするということは、どんなMDIに対しても
影響が及ぼされてしまうんですね。
一部のMDI Chileだけは個別にメニュー付きで、他のMDI Childは、親のメニューにMerge、という具合には出来ないんですか。 そこまでこだわるなら floating menu 造って子ウィンドウに載せろ >>214
そういうヘンテコなUIはどうかと思うけど、
マージしたくない子のMenuStripのAllowMerge = falseでいけるみたい
っていうかこれぐらい自分で試そうよw >>211
MDI Child Frame(?)の子として中に別の Window を入れるのでしょうか? いくら初心者向けのスレッドっても少しは自分で試してみなよ コードを変更しても反映されない
いきなり原因不明のエラーが出ると思ったら
Form1.Designer.csの中で勝手にプロパティ初期化してた VS2019のメニューを見ていると、MFCと同様に、無効な項目は
グレイ表示されています。
MFCの場合は、Merge方式ではない代わりに、ActiveなChildWndが
ハンドラを実装していない場合には自動的にグレイ表示になっていたのですが、
WinFormsの場合は、どうやれば良いのでしょうか? >>220
1年前にも似たような質問があった気が。
MFCは知らないのであれだけど、多分MFCに近いやり方は用意されてないかと。
結果的に同じようなUIをなるべく簡単に実現するには、1年前にも書いたけど
MDI子に共通のメニューを持つFormをまず作って、
個々のMDI子はそれを継承するのがいいんじゃないかなあと >>221
それで、ハンドラを実装したくない継承クラスでは、その項目を disable にするという
わけですか。 そうそう。
継承後のフォームでもデザイナでコントロールのプロパティーの値を変更というか上書きできたはず
ついでに、MenuStripのVisible = falseにしておけば親にマージされている時以外メニューは表示されないみたい ビル・ゲイツが私財でコロナのワクチン作る。
c# プログラマに一番最初にワクチンを供給してくれるとおもう。
安全性の確認できないワクチンや薬品をc#プログラマにぶち込めば開発効率が上がる。
人体実験を断ったら、msdn、マイクロソフトid を停止させるとかして、Windows 利用不可にすればいい。
c#コンピューターオタクは断ると当面お金を稼げなくなるから喜んで実験に参加してもらえるはず。
まと、コンピューターオタクには人権はないので、実験により貴重な人命が損なわれることもない。 MSが作るワクチンなんてバグだらけになってそうでこわひ そんなミスされたらゲイツの顔がブルースクリーンになっちゃう >>224
先生そういう宗教的な分野はMacとかSwiftとかの方が適していると思います >>225
c# プログラマにベータ版ワクチンをインストールしてもらいデバッグするんですよ。
バグのないワクチンとソフトウェアはありません。
Macユーザーは完成後のワクチンは提供対象外。
だから、MacBook とかに Windows をインストールしてる人は、デバッグと実験の対象になりますが、完成したワクチンの提供は対象外となります。 visualstudioで
フォームアプリに追加したクラスライブラリにclass1.csとclass2,csがあるんですけど
class2の方にコントロールを継承してもツールボックスに表示されないのはなぜでしょうか
class1だと表示されました GoogleドライブにファイルをアップをしたくてGoogleの下のサンプルを
参考に動かしてみたのですが、全くアップできず何が悪いのかさっぱりです・・・
https://developers.google.com/drive/api/v3/quickstart/dotnet
https://developers.google.com/drive/api/v3/manage-uploads
以下がコードです。
https://dotnetfiddle.net/4z2iZ4
ファイルのリストは、取得できているので認証はできていると思うのですが
「var file = request.ResponseBody」の行で、fileがnullとなっており
次の行でエラーが発生しています。
どなかたお助けください。よろしくお願いいたします。 >>231
追加部分をビルドしてもツールボックスに表示されないのなら該当するVSのスレで聞いてくれ >>232
var driveService = new DriveService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = "MyApplicationName",
});
使ってない? あとは
var fileMetadata = new Google.Apis.Drive.v3.Data.File(){
Name="test.png",MimeType="image/png",};
にしてみるとか
他にはstreamがbinaryになってるかどうかとか
https://gist.github.com/LindaLawton/ead22e44bf88c3afa60753de0445eddf
この人もnullって言ってるな っていうか
DriveService.Scope.DriveReadonly
じゃだめな気がする >>235
すみません。そこ使っていません。コメントアウトしました。
51行目でDriveServiceを宣言しているので、そこでの宣言は不要でした。 >>237
>>238
出来ました!ありがとうございます!!
なるほど!一度作ったjson消さないと駄目なんですね。
本当にありがとうございました!! バルクコピーはdatatableだけに対応なのでしょうか?
ググってもジェネリックで使う記事が見当たらないので無理なのかなという気がしていますが SqlBulkCopyの話ならWriteToServerのオーバーロード見る限り
IDataReader頑張って実装すれば何とかなりそう ググればToDataReaderの拡張メソッドヒットするからそれ参考に実装すればいいんじゃね
俺社環でライブラリの拡張メソッド禁止されているから、IDataReaderで作ったけど >>243
知らない知識なので参考にさせて頂きます
しかしバルクコピーのメソッドがdatatableという古い技術で実装させる時点で、そもそもバルクコピー自体が古い技術で別の最新技術があるのかなと疑っております
色々な角度で調べてみるつもりです win10において
・ネットワークとインターネット設定→プロキシのセットアップスクリプトを使う設定のON/OFF切り替え
・ネットワーク接続のインターネットプロトコルバージョン4のプロパティの
IPアドレスを自動的に取得すると、次のIPアドレスを使うの切り替えと入力
DNSサーバー・・・と次のDNSサーバーのアドレスを使うの切り替えと入力
これをC#アプリで実現できますか?どのようなクラスを使えばいいでしょうか? レジストリいじれば設定変更できるやつだろ
ようはwin32だろ、それくらいまでは調べたよな? IPアドレスの変更の類はnetshコマンドをProcessクラスで使うのが一番手っ取り早いと思う 目的にもよるんだろうけど、PowerShellでスクリプト書く方が早そうな予感
完全にスレチになるけど 内部でPowerShellスクリプトを走らせるC#プログラムを作る 日本語を母国語としない人ほど
正しくない日本語で困るのです >>245
新規開発でdatatable使ってたらうわってなる あーそういや気付けばdapperばっか使ってたわ
あいえにゅめにゃんにゃんが便利やしなあ DBとは無関係に
動的列、フィルタ&ソートしたまま行追加、みたいなのが必要な時はDataTable使ってる DataTableでうわぁっってなるひとはJSONでくぇぇっってならんのまじで? Chartコントロールで横のスクロールバーを表示させる方法を教えてください。
サンプルプログラムは↓のをほぼそのまま使いました。( i < 5のところを i < 500に変えて数だけ増やしています)
チャートは普通に表示されるのですが、いろいろ探してもスクロールバーの出し方が全然わかりません。
https://qiita.com/Aki_mintproject/items/02e98173eb8eee74fc5b >>268
ここで言ってるのはモデルが自分自身の変更内容を保持する機能な
EFにもないよ
もちろんモデルに自分で作りこめば可能だけどな DatasetやTableのoriginalが取れたりrejectでロールパック出来たりするのは確かに便利 よぉ〜しよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよし if(条件A && !条件B){}
みたいなことをしたいのですが、&&と!をまとめてきれいに書く方法はありますか? var 条件C = 条件A && !条件B;
if(条件C){} クラスや関数にする
設計を見直す
あーりーりたーんを心がける if (foo.IsEnabled && !bar.IsEnabled) を
if (foo.IsEnabled && bar.IsDisabled) にすることはある
単語の頭につけるエクスクラメーションマークは
見落としやすいから可読性がやや低い
>>278のパターンで変数にすることはあんまりないけど関数化するのもよくやる >>277
おそらくそのまんまが一番きれいで見やすいぞ。
条件が長い式なら>>278みたいに一旦、適切な命名の変数に入れるのがいいと思う。 一発で書けるのかなと、すごく疑問に思ってたよ
ありがとう! 一発で書けた
if (b ? false : a) {...}
一発で書けた
if (!(!a || b)) {...}
一発で書けた
Func<bool, bool, bool> ippatu = (x, y) => x && !y;
if (ippatu(a, b)) {...} Not演算子が見辛いから関数に置き換える
ぐらいでいい気はする >>285
1つ目は短絡評価の場合の動作が異なるから等価な式になってないし、2つ目の式は元の式より見辛くなって無意味だろう てかそんな条件がパット見でわからんくなるなら、根本的にそこにいたる道筋がおかしいと思うよ SSH.net使った事ある人います?
フォワードポイント設定後、Startしてプログラムは通ってるんですけど、なぜかポートが開かないので困ってます
RloginというフリーのSShソフト使うと同じポートが開くので、SSH.net側かVS側が原因と考えてます
ネットの先人たちの知恵を拝見して同じようにしてるんですけど、なぜか上手くいきません
開発環境
VS2017
Nugetより最新のSSH.netを入れてます
netstatコマンドでポートの確認したら、192.168.〜の所が開かず、[::]の所が開いてるようです
これはなんなんでしょう? >>292
ポートじゃなくてIPどうなってんの?
見た感じv6が開いてそうな感じだけど。 ポートフォアード開始してる?ステップインで状態とエラーメッセージ追えば理由なんとなくわかるんじゃね? >>293
>>294
返信ありがとうございます!
>>293さんのおっしゃる通りv6が開いてました
フリーソフトは両方開けてくれてたので、そこで勘違いしてました
こんな簡単な事でスレ汚してすいませんでした
ありがとうございました 拡張メソッドがあるのに、拡張プロパティなどが無いのは何故でしょう?
多くの日本語解説サイトで DirectoryInfoではなくDirectoryを、EnumerateFilesでなくGetFilesを使ってるのは何故でしょう?
(対応していないバージョンのC#を利用する人も、その方が高速・妥当なコードも稀だと思うのですが…) >>296
> 拡張メソッドがあるのに、拡張プロパティなどが無いのは何故でしょう?
Why No Extension Properties?
https://blogs.msdn.microsoft.com/ericlippert/2009/10/05/why-no-extension-properties/
> 多くの日本語解説サイトで
解説を書いてるヤツらに聞け >>298
最悪の提案だな
言語にこういう横断的関心事を入れられるようになるとだいたい無茶苦茶になるから、絶対にやめてほしい >>297,298
なるほど 確かにC#3.0に並んでるものと比べたら、優先度低くても全然不思議じゃないですね
将来的な実装を心待ちにしておきます ありがとう!
開発チームの内情というか現実的な部分の説明が面白かったw
>>299
言われてみれば、強力な反面 把握し辛い奇想天外なクソコードも書きやすくなりそうですね >>298
リフレクション使うとどんな挙動になるんだろ >>301
今の拡張メソッドと特に変わらんのじゃない?
>>299
ちなみに言語にこういうのを入れて滅茶苦茶になった言語ってどんなのがある?
どんな感じに滅茶苦茶になったのかな >>302
そういう失敗例ならScalaでも見てみたら Taskとasync/awaitの使い方について質問です
await Task.Delay(100);
と
task.Wait();
を組み合わせるとデッドロックすると色々なページで書かれていますが
試したらデッドロックしませんでした
https://ideone.com/d6BWCC
ConfigureAwaitもよく分かっていません(コンテキストとかマーシャリングとかも・・・)
https://docs.microsoft.com/ja-jp/dotnet/api/system.threading.tasks.task.configureawait?view=netframework-4.8
なぜデッドロックしなかったのか教えてください WPFで適当なボタン作ってクリックイベント内で同じようなことをしたらフリーズしました
GUIじゃなければ起きない、とかでしょうか
CUIだとフリーズせず実行できてしまいます ・UIスレッドは1つしかない
・GUIアプリの場合、await後は生成元のスレッドに戻ろうとする
・ところがUIスレッドはawaitしている
・お互い待ち合うことでデッドロック発生
CUIの場合はawait後に元のスレッドに戻らないのでデッドロックしない。
GUIでもAsync1、Async2のメソッド内で
await Task.Delay(100).ConfigureAwait(false);
とすればデッドロックしないが、Async1やAsync2でDelay後にUI部品触ると(ボタンのキャプション変えるとか)落ちる なんとなくわかった気がしました
SynchronizationContext.Currentで取得できる同期コンテキストでawaitの動作が変わってるみたいで
CUIはもともとnull、WPFは
await Task.Delay(100).ConfigureAwait(false);
のあとはnullになるようです
一度nullにしてしまえば
await Task.Delay(100);
Async().Wait();
とやってもフリーズしませんでした
というかCUIと同じようにawait毎にスレッドがコロコロ変わるようになります
逆にCUIでも同期コンテキストを設定してしまえばデッドロックも起こせるみたいです
SynchronizationContext.SetSynchronizationContext(new WindowsFormsSynchronizationContext());
とやったらCUIでもフリーズしました
普通のnew SynchronizationContext()ではフリーズしないので、知らない仕掛けがありそうですが
同期コンテキストの作られ方によってawaitの動作が変わるから
デッドロックが起きたり起きなかったりする、という感じがしました ■ このスレッドは過去ログ倉庫に格納されています