ふらっと C#,C♯,C#(初心者用) Part141
レス数が1000を超えています。これ以上書き込みはできません。
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください
>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■関連スレ
C#, C♯, C#相談室 Part93
https://mevius.5ch.net/test/read.cgi/tech/1492818720/
■前スレ
ふらっと C#,C♯,C#(初心者用) Part139
https://mevius.5ch.net/test/read.cgi/tech/1538646998/
■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/
■情報源
https://msdn.microsoft.com/ja-jp/library/gg145045.aspx
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index
https://msdn.microsoft.com/en-us/library/gg145045.aspx
http://referencesource.microsoft.com/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured こっちの方がいいか
EventHandler eh = (sender, e) =>
{
Action<ToolStripMenuItem> a = null;
a = item =>
{
if (item == null) return;
var parent = item.OwnerItem as ToolStripMenuItem;
a(parent);
parent?.ShowDropDown();
};
a((ToolStripMenuItem)sender);
};
ToolStripMenuItem1.Click += eh; >>899
無事できました
ありがとうございます! 質問です
現在、以下のように一つの非同期処理(時間のかかるディスクの書き込み)
を実行しています。
private async void button1_Click(object sender, EventArgs e)
{
await DoSomethingAsync();
MessageBox.Show("完了");
}
これを実行中にUIを操作して、次の処理の準備ができたら(実行する内容はDoSomethingAsync)
button1を押して予約し、実行中の処理が終わったら引き続き実行させたいです。(並列ではなく)
また、「完了」は登録されたタスクが全て終わったときに出したいです。
どのように書くのが一般的なのでしょうか?
初回実行時にすべての実行すべきタスクがわかっている場合は
そのタスクのリストを作ってWhenAllする みたいなのはググったら出てきたんですが
ContinueWithを使うのかなと思ったのですが、書き方がわかりませんでした >>902
最後に追加したTaskを覚えておいてContinueWithで繋ぐとかできなくはないけど、
そんな変なハックをするくらいなら素直に別スレッド立てて順番にバックグラウンド実行したほうがいい
Producer-Consumerでググれ c#のフォームで、タイルマップエディタのようなものを作りたいのですが、どのような情報を調べたらいいでしょうか
また、そのような目的に適したフォームはありますか?
そもそもC#が適切なのかわからないのですが VisualStudioでデバッグ実行した時だけプログラムがフリーズしてしまうのですがこういう時はどういった原因が考えられるでしょうか?
WinFormを使用していてフォームが立ち上がったらバックグラウンドで色々するって感じの処理なのでどこかでUIスレッドをブロックしているのかとも思いましたがConfigureAwait(false)の設定し忘れは無さそうでした
VisualStudioを通さずに直接実行した場合は正常に動作しています とりあえずフリーズした時に「すべて中断」して
どこでブレイクされるか確認
ついでにスレッド一覧を見てみる >>908
それを試そうとしたのですが全て中断しても中断出来ない状況です
中断押すとVS自体もフリーズしてタスクマネージャーからプログラムを終了しないと復帰出来なくなります 最前面じゃなくて後ろ面にアクティブウィンドウがポップアップされてるんじゃね >>902
単純にボタンをクリックした回数だけ非同期メソッドを実行したいだけなら
これでいいような気が
private bool mBusy = false;
private int mRepeatCount = 0;
private async void button1_Click(object sender, EventArgs e)
{
mRepeatCount += 1;
if (mBusy) return;
mBusy = true;
for (int i = 0; i < mRepeatCount; i++)
await DoSomethingAsync();
mBusy = false; mRepeatCount = 0;
MessageBox.Show("全部終わった");
} >>907
俺はエディタでヒント表示させただけで落ちるけど。Blendなら使えてる。 https://i.imgur.com/NCB8nLP.jpg
c#をデバッグするとこのようなエラーが出るのですが、どこを改善すればいいかヒントをください ↑ありがとうございます
.NET Core Launch (console)
というデバッガを使っているので、
"program": "${workspaceFolder}/bin/Debug/<insert-target-framework-here>/<insert-project-name-here>.dll",
という部分を修正するのだと思いますが、どう修正するんでしょうか?
実行したいプログラムを{workspaceFolder}/Program.csと指定してもエラーになります >>915
いやだからcsじゃなくてdllだってば >>915
プログラミングするなら英語は必須だから、「何だか分からないこと言ってる!」とか思わずにちゃんと読みな。 >>916
c#なのにDLLなんですか?
このDLLのパスは何をしてるんですか? 普通にVisualStudio(Codeじゃないやつ)ダウンロードして知識付けてから挑戦しろよ
邪魔だよ >>909
そうなるともう新しいプロジェクトに今のを段階的に移していってどこで再現するか確認するかなぁ >>919
とりあえずエクスプローラなりコンソールなりvscodeとは別に開いて
プロジェクトフォルダのbinフォルダの配下を確認
どこかにビルド結果のdllが作られてるから
うちはいつの間にかPlatformって環境変数が定義されてたせいで
HPDとかいうフォルダが1個挟まってたぞ >>922
ありがとうございます
とりあえず特定のメソッドを呼ばなければ大丈夫ということがわかったのでデバッグモードでは呼ばないようにして対策することにしました >>923
デバッグできました 余計なフォルダが挟まっていました
指定してやらないといけないんですね ありがとうございました setterメソッドで文字列が8文字以下ならname変数に引数を代入する文を書きたいんですけど
どのように書けばいいんでしょうか? private string name;
public void SetName( string name )
{
if ( name.Length <= 8 )
{
this.name = name;
}
} セッターよりもプロパティで良い気がする
private string name;
public string Name
{
set
{
if ( value.Length <= 8 )
{
this.name = value;
}
}
get
{
return this.name;
}
} >>931
ありがとうございますー
lengthを使うとint型とstringをオペランドに比較が使えるんですね
覚えておきます >>933
> lengthを使うとint型とstringをオペランドに比較が使えるんですね
言いたいことはなんとなくわかるけどほんとに理解してるのか不安になる文章だな 8文字越えた場合や
検証属性の話をと思ったけど自重 Windows.Forms の質問です。
TextBox 数個と MenuStrip に サブメニューのない MenuItem を追加したFormで
Altキーでメニューを選択すると、
カーソルキーの上下でTextBoxのフォーカスが移動するのですが
どういった理由でしょうか? うーん
ショートカットキーの設定ができるので
ツールバーの代わりに使おうと思ったんですが
予想外のキモい動きで躊躇してます JS
hoge([[1,2,3], [4,5,6]]);
C#
hoge(new int[,] {{ 1,2,3 }, { 4,5,6 }});
javascriptみたいにnew付けないで渡せないですか?
paramでは2次元がだめでした。 サイドバーについてなんですが、例えばgimpというソフトがあるのですが、両サイドにツールやレイヤーが表示されています
このように領域を分けるコントロールを教えてください
win form c#です
これはもう1つフォームを追加してるんでしょうか? >>942
フォームの枠の中に配置・移動させるのならVisual Studioでデザイナ画面+ツールボックスの「コンテナー」のカテゴリの好きなものを
フォームの枠の外やはみ出して使いたいものには別のフォームを割り当て、というのが基本じゃないかな
GimpはCだからどうやっているかは知らないけど 別フォーム使った場合でもドッギングなど可能ですか?
だとすれば分けたほうが作業しやすそうですが >>940
超初心者か池沼向け
普通の人はwebで充分 >>945
win formではドッギングや分離はできないのですか?
また、別フォームと同じフォームでやるのとではどちらが都合がよいでしょうか >>948
ttps://dobon.net/vb/dotnet/links/dockingwindow.html 市販のinfragisticsのドッキングウインドウが楽チンだったわ Form1からForm2を呼び出すとき、こういう記述をしますが、変数の型がどうしてForm2なんでしょか?varじゃエラーです
Form2 form2 = new Form2();
form2.Show(); 学習のために、確保した変数がスタックかヒープかどっちにあるのか知りたいんだけどさあ
簡単にチェックする手段ってないんかな? メモリダンプ系のツール使えばいいよ
昔の話だがメモリ上のオブジェクトグラフを可視化してGC絡みのバグをデバッグした事がある "変数が"ってことなら変数の型が参照型か値型か
要はコンパイルの時点で判断できる
IntelliSenseでclassかstructを見れば良い話に思えるが >>953
Form2というプロジェクトを作りましたが、これがクラスになるんですか?
この変数型はどういう意味ですが >>961
一回チュートリアルなり
入門書とか入門サイトなりやってみろと >>964
クラスがなんなのかわかっていないお前には無理
上にも同じ事書かれてるけどまず入門書を読め >>967
もしかして、ろくに経験もなく基礎も理解しないまま作りたいものを作り始めて、わからないときだけサイトで情報拾ってどうにかなると思ってないか?
ある程度基礎ができているか理解力のある奴ならそれでもいいが、君には無理だ。
ちゃんと金出して真っ当な入門書を買って、面倒がらずに順を追って基礎から身に付けてこい。 質問した人は回答にフィードバックくらいしろよ
質問スレでフィードバックせずに次の質問って論外 いいや
そいつのクソレスなどいらん
入門サイトやら入門書を1ページでも前へ進めろ そうだな。独習3版でも一回読み切る事をお勧めするよ >>964
ファイラー作るとか言ってた人だよね
コピペ以外で何か作ることはできたの?
作れずに諦めて次できそうなもの見つけて質問するの繰り返しでしょ 君の作ったプロジェクトの内容なんて分からんよ。
プロジェクト内のソースを探せばForm2クラスを宣言してるんじゃないの?
Visual Studioは色々自動生成して、色々隠蔽してるからオプジェクト指向が理解し難い。
一旦動いたら、全てのソースファイルをメモ帳で開いて動きを解析してみる。
全ては一度には理解できないから、オプジェクト指向の説明本を読む。
やっぱり理解できないけど、ソースを読み解くって繰り返すと段々理解できてくる。 WinXPのスタートメニューのように、ContextMenuStripのToolStripItemにDrag&Dropって出来ますか?
ToolStripItemのAllowDropをTrueにしても、ToolStripItemのDragEnterイベントが発生しないのですが。
VC++2008を使用しているのですが、ToolStripItemのプロパティ窓にはAllowDropもDrag関連のイベントも 表示されていないので、コードで記述しているのですが、もともとサポートしていない? >>975
試してないけどdocsには
https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.forms.toolstripmenuitem?view=netframework-4.7.2
DragDrop ユーザーが項目をドラッグし、マウス ボタンを離したとき (つまり、項目がドロップされたとき) に発生します。 (Inherited from ToolStripItem)
https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.forms.contextmenustrip?view=netframework-4.7.2
DragDrop ドラッグ アンド ドロップ操作が完了したときに発生します。 (Inherited from Control)
ってなっているからContextMenuStripのは期待通り動作しそうだけどToolStripItemのは項目自体のものだから単独では無理かと
どうしてもやるのならContextMenuStripのほう使ってMouseMoveか何かでカーソルと項目の位置確認しながらやるとか
その前にContextMenuStripがFocusの移動とかで閉じないようにClosingのイベントの設定なども当然必要
もう一回書くけど試してないし試す気もないので責任も取らないw 来月からASP.Net初めて触るんだけど
何から始めればいいの?
MVCとかそういう単語と理論とか?? >>977
ASP.NETにもいろいろあるんだけど…
とりあえずテンプレートをビルドして動かしてみるところから >>977
君が業務ドカタなら、たぶん君がやることになるのはASP.NET MVCでもASP.NET CoreでもなくClassic ASP.NET(WebForms)
Webの知識皆無でも最低限形だけでもWebアプリを作れるようにしたフレームワークで、
WinFormsでメモ帳モドキくらい作ったことがあれば楽勝だから何も心配いらない >>979
ASP.NET MVCなんじゃね?
知らんけど >>980
MVCの意味も知らない子が投入されるような現場でASP.NET MVCなんか使ってるかねえ
まあ物好きな前任者が一人で作ってたシステムだったりするとあるかもね >>981
前やった40画面くらいの小規模プロジェクトがMVCでしたわ
メンバーのほとんどがjs?css?c#?LINQ?な素人で激アツだった Webは覚えることが多すぎて禿げちゃうから
学習コストが低いらしいBlazorに期待してる asp.net core使って開発したいがまだまだ実用レベルではないんだろうな
そう思うと開発頓挫しそうで使えない 普通に使えるよ
英語読めないジャップにとっては永遠に実用にはならないだろうけど 〇〇Coreはバージョンアップで平気で互換性切ってくるから、受託開発では使っちゃいけない代物
ソースを手放さずいつでも自己責任で弄れる事業形態向け >>985
もう既に実運用してるけど
そろそろ3年だしさすがにね >>987
おじいちゃんはずっとCOBOL使ってればいいと思うよ >>989
こればっかりは老害とかそういう話じゃなくて業界構造の問題だからね
米国のシステム開発は内製が主流であり、基本的に自己責任だから改修のハードルが低いの
それに合わせてMSの開発者向けプロダクトも変化を許容する方向へ変わってきていて、
もはや日本のSIには全く適さないものになってしまってるんだよ OSSとか向こうから来るもんは全部そうだね
人身売買なんかやってたら理解できない文化ばっかり OSSに対する考え方は顕著な例だね
受託開発においてOSSのライセンスを受ける主体は開発会社じゃなくてユーザー会社だから、
当然、開発会社が使用したOSSは全てユーザー会社に把握させてユーザー会社自身が承認しなければならない
これは事業形態上完全に正当で必須なプロセスであり、時代遅れとかそういう問題ではない
NuGetやNPMなどのパッケージマネージャで依存関係として勝手に入ってくるOSS全てに対してこのプロセスを適用するのは事実上不可能 >>986
日本に住んでるなら日本語使えや、英語なんて翻訳すりゃあいいんだよ。フランス人を見習え インターネット創世記の頃は情報共有とか甘い言葉が飛び交ったが
最近ではやっぱスキルやノウハウといった知的財産情報は
対価を払って手に入れるべきだと思うようになった
ネットでただで手に入れたいなら英語くらい読めよって話だな レス数が1000を超えています。これ以上書き込みはできません。