ふらっと C#,C♯,C#(初心者用) Part129 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2017/06/09(金) 18:36:01.72ID:lNiKtgPwM

「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。

他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。

内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。

なお、テンプレが読めない回答者は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

■前スレ
ふらっと C#,C♯,C#(初心者用) Part128
http://mevius.2ch.net/test/read.cgi/tech/1493730340/

■関連スレ
C#, C♯, C#相談室 Part94 [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1492843013/

■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/

■情報源
https://msdn.microsoft.com/en-us/library/gg145045.aspx
http://referencesource.microsoft.com/
---
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
2017/06/13(火) 19:29:42.17ID:w2943itEa
>>107
説明できないのは不味いけどね
2017/06/13(火) 19:38:11.25ID:vCLYhKgF0
伸びてるときは読まなくていい法則
2017/06/13(火) 19:45:32.33ID:2H7RAtZfM
>>113
何に噛みついてんの?
やりたいことさえ実現できてれば後は趣味の世界なんだから気楽にやろーぜ
2017/06/13(火) 19:58:18.16ID:w2943itEa
>>115
初心者スレで甘やかすのよくねーよ
こんなメリットの説明もできないコード書かれても困る
俺も独学で組んでた時代長かったけど
なんとなくこっち
何となくこれ
って感性でコードの良し悪しを決める癖って仕事で使うときに害にしかならねーよ
2017/06/13(火) 20:04:14.41ID:2H7RAtZfM
>>116
それは仕事だからだろ
ここは仕事じゃないよ

俺は初心者スレだからこそ細かいことは置いといてまず楽しむってことが大切だと思ってる
2017/06/13(火) 20:07:38.68ID:w2943itEa
>>117
じゃ、お前はそういうレス担当な
俺はこっち担当で
2017/06/13(火) 20:10:00.35ID:zMNW55ydM
答えとしては言語仕様上は簡単な方法はありません
定石となる書き方もありません
2017/06/13(火) 20:16:21.76ID:yfz+mfcVr
>>112
麻疹と同じで子供のうちに掛かった方が良いのかもねww
(比喩的な意味で)
お爺さんになってからは手遅れなのかもねww
2017/06/13(火) 20:18:24.89ID:yfz+mfcVr
>>113
>>106

仕事じゃないんで
これ以上は有料ならw
2017/06/13(火) 20:31:37.23ID:RZqcqt//0
NGでスッキリ
2017/06/13(火) 20:34:56.50ID:w2943itEa
それも1つの選択
ただし、仕事では使えない
説明を求められても回答できない
メリットの説明もできないコードだということは彼の頭にうっすらでもちゃんと残ってくれるだろうね
それでいいよ
2017/06/13(火) 20:38:13.81ID:yfz+mfcVr
>>123
説明しても理解出来ないお爺ちゃんお疲れさまでした
2017/06/13(火) 21:22:39.97ID:swVjUcbe0
C#初心者です。
今、コントロールだけを録画するアプリを作ろうと思っているのですが、いいような録画方法がわかりません。
また、フォームを最小化したり、別のウィンドウがかぶってもできるようにしたいです。

調べてみてもwebカメラのものが多く、肝心な録画方法は見つけられませんでした。

また、Aforgeライブラリを使いBitmapをフレームごとに追加しaviファイルにするというものは見つけられましたが
これは画面自体のキャプチャなのでコントロールのみができません。
もちろん座標とサイズを合うように指定すればよいのだと思いますが、この方法では別のフォームがかぶったときにコントロールの部分は見えなくなります。

また、PrintWindow関数を使った方法で指定したコントロールをキャプチャするという方法もあり、これなら・・・と思いましたが
スレッドの関係で画像を撮るときにコントロールにアクセスするため、UIスレッド?で実行しなければいけないので、実行時に一瞬ですが止まってしまいます。
これを繰り返すともちろんフォームを操作できなくなるので、この方法もダメでした。

他に何かいい方法はありませんでしょうか?
もちろん自分のやり方や理解が間違っているということも十分にあるので、そこは指摘してくれればうれしいです。

長文失礼しました。
2017/06/13(火) 21:32:40.53ID:N47QkURm0
自分のソフトを録画するのか、他プロセスの話なのか
2017/06/13(火) 22:03:06.77ID:kxrCs3DYM
DWMのフレームバッファを取る方法無かったっけ
2017/06/13(火) 22:05:04.35ID:00AUiRloa
>>125
単なるキャプチャーじゃなくて動画にするの?
なんでそんな高いハードルを設定するのよw

単なる静止画キャプチャーならControl.DrawToBitmapでできるんじゃない?
キャプチャーするレートにもよるだろうけど、余程複雑なコントロールでもない限り
プチフリとかならんと思うけど
2017/06/13(火) 22:12:35.61ID:dK6efeen0
隠れAPIのDwmGetDxSharedSurfaceあたりから探ればええんでないかしら
2017/06/13(火) 23:14:01.47ID:swVjUcbe0
>>126
自ソフトです。

>>127 >>129
DWMですね、一度調べてみます。

>>128
自分で作りたいと思ったからです。少し時間が掛かっても作りたいものは作りたいでしょう?
2017/06/13(火) 23:20:16.99ID:zMNW55ydM
>>130
自ソフトなら録画する必要ないと思うけど
ログ取って再生するだけ
2017/06/14(水) 00:49:02.90ID:YU75e/WJ0
おまいら、paizaで何級?
2017/06/14(水) 03:56:51.26ID:QUVmRL9lM
近々S級を取ってみせる。
いまはただのA級ですがね。
2017/06/14(水) 06:39:28.96ID:lvKMQC+V0
paizaは知らないけどcodejamでfinalまで行ったよ
2017/06/14(水) 06:56:30.58ID:TJHy+lk+M
>>133
初心者かよw
2017/06/14(水) 12:34:01.59ID:TtxDPC/bM
>>125
僕もC#のことはよくわかりませんが
C#で書いてるオープンソースのイケてるウインドウ動画キャプチャソフトです
参考になれば
https://github.com/NickeManarin/ScreenToGif
2017/06/14(水) 16:23:09.99ID:TJHy+lk+M
>>133
語弊があるな。
本当に初心者かよ!?っていみです
2017/06/14(水) 16:27:38.10ID:TJHy+lk+M
”yyyy/MM/dd HH:mm:ss.fff”
このような時間情報のはいった文字列strを以下のようにDateTimeにcastしますと
DateTime TimeStr = DateTime.Parse(str);
TimeStrの中身は{yyyy/MM/dd HH:mm:ss}となってしまい、ミリ秒の情報がどこかにいってしまいます。
ミリ秒込みでstring型からDateTime型へcastするにはどうやれば良いでしょうか。
2017/06/14(水) 16:51:08.03ID:XhCLl6nw0
単に表示してないだけじゃね?
TimeStr.ToString("yyyy/MM/dd Hh:mm:ss.fff")
とかやってみてみ
2017/06/14(水) 19:15:45.01ID:+kTwcE8uH
vbnetと.netframworkの違い教えてください
2017/06/14(水) 19:26:28.15ID:Keax5Nyj0
>>140
.NET Frameworkは.NETで作られたプログラムを実行するためのランタイム
VB.NETはその中で使える言語の一つ、C#とかの仲間
2017/06/14(水) 20:50:15.87ID:f81xY7pa0
>>141
ありがとう
理解するのに時間がかかった‥
2017/06/14(水) 21:09:53.73ID:2DT+QGf30
>>136
ありがとうございます!
まだ見れていないのですが、ぜひ参考にさせて頂きます。
2017/06/14(水) 22:04:26.13ID:YU75e/WJ0
>>139
仰るとおりでした!
2017/06/14(水) 23:04:58.97ID:ji83wWfb0
vs2015でどこからも参照してない古いクラスファイルをプロジェクトから除外→F5起動すると動作がおかしくなる
(DLLimportが失敗する、app.manifestで設定してる高解像度対応が無効になる)

調べてもよく分からないからそのまま使ってるけど、理由わかる人いますか?
2017/06/14(水) 23:13:48.31ID:vAJEYwl8M
>>145
自分で作ったもの?
それとも他人が作ったもの?
2017/06/14(水) 23:17:44.15ID:ji83wWfb0
>>146
自作です
1年前に作り初めてコツコツ改良しつつ使ってます
2017/06/15(木) 08:24:20.94ID:2A/yC8Ge0
>>147
多分外してると思うが、ソリューションのクリーンで治る場合もあります
2017/06/15(木) 21:40:53.73ID:3vAYf7Jr0
>>148
ありがとうございますm(_ _)m
今試した限りではダメでした

やっぱり追加、修正してるうちにどこかおかしくなってるのかな
とりあえず時間ができるまではこのまま使うことにします
2017/06/16(金) 17:33:39.10ID:+giSoZYq0
コンボボックスやテキストボックスを10個 for文などで処理したいんですけど何使えばいいですか
for i =0
combobox i =***
textbox i =***

イメージ的にこういう感じです
2017/06/16(金) 17:40:11.27ID:E3R+yWmZa
var cbs = new[]{combobox1, combobox2, ....};
var txts = new[]{textbox1, textbox2, ....};
2017/06/16(金) 19:01:39.55ID:pyKmluG/0
>>150
foreach(var combobox in Controls.OfType<ComboBox>())
{

}

ControlsにFormで定義されている全てのコントロールが入っているから、それからComboBox型だけ抽出
2017/06/16(金) 19:36:55.46ID:0PcK3P+xM
皆C#で何作ってる?
2017/06/16(金) 19:49:27.63ID:ThJw6ZZia
>>153
自動ブログ作成まっしーん
俺の2ちゃんねるの書き込みを元にブログを作成する
使用者は俺のみ
2017/06/16(金) 20:27:07.99ID:hd0Ql4Nya
ゲーム
2017/06/16(金) 20:36:11.50ID:A6bnq7Mza
無粋な突っ込みだけど、自分のレスでも2chに書き込んだ時点で著作権は2chに移動するので
>>154みたいのは微妙にマズいと思う
2017/06/16(金) 20:53:01.95ID:llRCxZfkM
なんで?
因みに自分は自動ソースコードライター
2017/06/16(金) 20:58:38.55ID:+kGF+8t90
株の自動取引ツール
2017/06/16(金) 21:01:32.42ID:7qWBU0DKr
著作権を主張する2chってのも世も末だなと思う今日この頃
2017/06/16(金) 21:21:38.47ID:A6bnq7Mza
詳しい事情は知らんけど、なんか例の乗っ取り騒動以来いろいろあったよね
このスレのタイトルにも天才禁止ついてるし
2017/06/16(金) 22:21:33.35ID:viYcn0/I0
確かに天才がこのスレを利用することは無いだろうな
2017/06/16(金) 22:29:56.36ID:+giSoZYq0
>>151
>>152
ありがとうございます
理解するのに時間かかりましたがなんとかできそうです
2017/06/16(金) 22:45:03.44ID:SNTjPZEm0
>>154を公開してたらマズいだろうな。アフィとかつけてたら更に。
でもまぁ、マイナーである限りは訴えられるリスクは低いかもしれないけど。

>>158
ヨダレが出るほどやりたい。
164デフォルトの名無しさん (アウアウカー Sa33-otAv)
垢版 |
2017/06/16(金) 22:46:38.91ID:BaZST6Yaa
アルゴの性能差が顕著に出そうやなw
2017/06/16(金) 22:49:24.32ID:pyKmluG/0
>>163
電車男は2ちゃんのものになったけど、2ちゃんでラノベ書いた人の著作権は作者のものになったと思ったよ
今問題にしているのはまとめサイトとの抗争だけでしょ
166デフォルトの名無しさん (ワッチョイ 4fe3-W9ZD)
垢版 |
2017/06/16(金) 23:06:59.57ID:e3V6DgTh0
>>153
軽い動画プレーヤー、軽い画像ビューア、アラーム時計、カレンダー
2017/06/16(金) 23:20:32.11ID:G6Sd6q7a0
自炊した本の補正ツール
2017/06/17(土) 04:24:32.54ID:N+Hb8N3C0
よろしければ、みなさんが初期に作成したVisualC#のアプリを教えてくださいませんか?
初学者で作れるのはどの程度のものなのか知りたいのです

本当は作りたいものを作るのがいいのでしょうが、どれも難度が高いため、完成させることによるモチベーションを適度に得たいのと、
参考書に載っているのはサンプルのためのサンプルみたいなものばかりで……
よろしければ実例を参考に「こういうのなら作りたいかも」というのを考えてみたいのですが、お願いできませんでしょうか?
169デフォルトの名無しさん (ワッチョイ 164a-2Jtg)
垢版 |
2017/06/17(土) 05:24:34.32ID:IAjbbKvT0
>>168
Amazonを一通り作れるようになるべき。
まずはログインからか。
2017/06/17(土) 06:57:39.48ID:OHTO1ViL0
カメレオンベースの改造人間は高度すぎて初心者向けじゃねーな
2017/06/17(土) 08:50:19.87ID:Pz+rULOlH
>>168
そんな事も人に聞かないと判断・決断できないようじゃ、ろくなプログラマーに
なれねーぞ
2017/06/17(土) 08:54:44.36ID:UkHjy7lW0
>>168
モチベーションなんて人それぞれだから好きなものを作ればいいよ
2017/06/17(土) 09:10:51.87ID:zjPLEmpW0
>>168
電卓一択
2017/06/17(土) 09:15:02.48ID:aTbxEjUL0
電卓とかテキストエディタとかブラウザとか絶対他社のものしか優れてるものしか作れないんだよな
2017/06/17(土) 09:18:47.13ID:LVtaY0YUM
普段めんどくさいなあくそったれと思ったらそれをメモすればいいじゃん
2017/06/17(土) 09:35:00.48ID:cX5L/y8y0
自分じゃなくて他の人に目を向けたら?
世の中にはお前がちょっとクソコード書いてやれば解雇されるクソみたいな仕事してる奴が腐るほどいるんだぞ
177デフォルトの名無しさん (アウアウエー Saf2-4shY)
垢版 |
2017/06/17(土) 09:44:33.47ID:WmtHpkBVa
>>168
GUIなら電卓は良いんじゃないかな。
おいらは何故か画像表示して、その上に落書きできる機能付けるのが定番だけど。
(ちゃんとWindow重なったり、拡大縮小で画像が消えないようにメモリ上にビットマップを保持して)

CUIだとcat -nと同じ、テキストを行番号付けて表示するって奴。
C#とかはIDE充実し過ぎだけど、LLとかだと自分専用テキストエディタとかモチベーション維持に良いかも。
2017/06/17(土) 10:04:07.30ID:aTbxEjUL0
visual basicとC#って違うんですか?
2017/06/17(土) 10:09:41.93ID:OHTO1ViL0
出来ることはほぼ同じ。違いはソースコードの見た目が大部分
180デフォルトの名無しさん (ワッチョイ aea2-yC+1)
垢版 |
2017/06/17(土) 10:13:01.37ID:Vu9y7E7d0
C#が初めての言語って人ここは少ないだろう
CかJava経由じゃないかなあ

ちな、圧縮ファイル内の画像をリサイズアプリ
2017/06/17(土) 10:19:41.45ID:oukwXZuM0
C#ならunsafeで出来ることがVBだと凄く面倒
2017/06/17(土) 10:42:57.69ID:IAjbbKvT0
tryと打ってエンター押せばcatchもend tryも書いてくれるVB
それに比べてC♯は自分で書かなきゃならない。
2017/06/17(土) 10:51:50.98ID:+efmFY/i0
>>182
それIDEの話だし、VSでもコードスニペットあるだろ
2017/06/17(土) 11:16:13.23ID:0jHdEJ69a
コードペニスット
2017/06/17(土) 11:20:07.43ID:JDz+7Aqh0
>>168
まずデジタル時計、次に画像ビューア

慣れてきたらデジタル時計にアラームを付ける
そして文字色や背景色をダイアログで設定して変えられるようにするとかフォントも変えられるようにするとか
画像ビューアも自分が便利に使えるようにバージョンアップする

かなり慣れてきたら簡単なテキストエディタや簡単なブラウザを作ってみる
2017/06/17(土) 11:28:08.65ID:Ff+eRTHW0
>>182
え、vsでtab2回押すのも面倒なの?
2017/06/17(土) 11:48:58.24ID:oj1+TyVBM
DB連携のアドレス帳だな
2017/06/17(土) 11:53:05.95ID:P+HusDAs0
>>179
嘘教えんなよ
2017/06/17(土) 12:00:00.23ID:cX5L/y8y0
C#はAWS LambdaやAzure Functionsでも使える
MSにすら捨てられてたVB
190デフォルトの名無しさん (アウアウカー Sa33-otAv)
垢版 |
2017/06/17(土) 12:28:42.76ID:25P2TRU/a
フォームアプリで無限ループをまわすと画面が固まるので、ループ処理を別スレッドで行いたいのですが.NET4の環境でこれを行うのはどういう記述をすればいいのでしょうか
ボタン1を押して無限ループ処理開始
ボタン2を押して無限ループ処理停止
みたいな感じです。よろしくお願いします。
2017/06/17(土) 12:35:29.47ID:mqhokTvga
非同期処理
async await
2017/06/17(土) 12:42:32.90ID:oj1+TyVBM
フォームアプリならbgwakerを使うのが楽では?
193デフォルトの名無しさん (ワッチョイ 5312-kYIN)
垢版 |
2017/06/17(土) 12:54:36.45ID:mQN0Gi2S0
>>190

bool cancelRequested;

async button1_Click()
{
 button1.Enabled = false;
 button2.Enabled = true;

 cancelRequested = false;
 await Task.Run( DoWork );

 button1.Enabled = true;
 button2.Enabled = false;
}

button2_Click()
{
cancelRequested = true;
}

void DoWork()
{
 while( ! cancelRequested )
 {
  ;
 }
}
194デフォルトの名無しさん (アウアウカー Sa33-otAv)
垢版 |
2017/06/17(土) 13:23:55.65ID:25P2TRU/a
>>193
ありがとうございます
async/await
を使うと、GetAwaiterの定義が含まれておらず〜って出るのですがasync/awaitを使わずにTask.RUN(DoWork)のみでいいでしょうか
あと、Task.RUN(DoWork)とTask.Factory.StartNew(DoWork)は全く同一処理と思っていいでしょうか
195デフォルトの名無しさん (ワッチョイ 5312-kYIN)
垢版 |
2017/06/17(土) 13:52:44.39ID:mQN0Gi2S0
>>194
修正版
http://ideone.com/1vh2bo

Task.RunとTask.Factory.StartNewは似てるけど、全く同じではないらしい。
MSDNのTaskFactory.StartNewの備考に書いてある。
今回の例ではどちらでも動くけど。
2017/06/17(土) 13:57:47.94ID:OHTO1ViL0
>>194
https://www.nuget.org/packages/Microsoft.Bcl.Async
コレ入れてね
2017/06/17(土) 13:57:55.77ID:zZ/nI29ta
cancelRequestedはvolatileつけるかプロパティにしないとまずくない?
2017/06/17(土) 13:59:20.60ID:cX5L/y8y0
boolなら問題ないよ
この場合、結果整合性があれば十分なはずだし
2017/06/17(土) 14:04:47.83ID:n9iTrThT0
テキストボックスを何十個か保存する方法教えてください
プロパティで設定して
Properties.Settings.Default.aaaa = this.textBox0.Text;
と1つ1つ手動で保存する方法はわかるのですが
他に一括でできる方法ありませんか
200デフォルトの名無しさん (ワッチョイ 5312-kYIN)
垢版 |
2017/06/17(土) 14:09:52.65ID:mQN0Gi2S0
>>194
すまん。.Net4環境だと標準でawait/async使えないの忘れてた。

async/awaitを使わないバージョン
http://ideone.com/34GTJb

>>195でも>>196のを入れれば動くはずだけど。
2017/06/17(土) 14:16:32.15ID:zZ/nI29ta
>>198
本当?

>>193
while( ! cancelRequested )
boolならここの最適化が回避されて毎回変数の値がちゃんと読まれるなんて聞いたことないけど
202デフォルトの名無しさん (アウアウカー Sa33-otAv)
垢版 |
2017/06/17(土) 14:17:41.38ID:25P2TRU/a
>>195>>196>>200
ありがとうございます!問題なく動作確認出来ました
GetAwaiterは私の勘違いでした
Task task = await 〜
してました。。
.NET4でもasync/awaitは大丈夫でした
Task.RUNは上のを入れればいいんですね?後で確認してみます。大変助かりました
203デフォルトの名無しさん (アウアウカー Sa33-otAv)
垢版 |
2017/06/17(土) 14:27:54.24ID:25P2TRU/a
すみません。また勘違いでした
async/await使えませんでした
上のをいれてみたら使えました
2017/06/17(土) 14:29:10.55ID:P+HusDAs0
>>202
なんでとっくにサポート切れの4.0使ってんの?
2017/06/17(土) 14:29:50.71ID:+efmFY/i0
.NET4.0はサポート外の環境だけど、意外と残っているんだよな
2017/06/17(土) 15:21:51.02ID:CkD5o1Z0a
>>199
普通に順にテキストに書き出して
あとで読み込め
2017/06/17(土) 15:27:16.60ID:n9iTrThT0
>>206
その普通にというのがどうやるのかわかりません
2017/06/17(土) 15:32:15.49ID:EJsUF3+1a
>>207
コントロール一覧を取得するもんがあったはず
そこからテキストボックスだけより分けて処理
2017/06/17(土) 16:42:38.11ID:CkD5o1Z0a
>>152
2017/06/17(土) 18:09:25.33ID:10Ix2VZLa
>>199
あんまり使ったことないけど、バインディングしておけばいちいちアプリケーション設定を
ユーザーコードで読み書きする必要はなかったように思ったけど...
http://dobon.net/vb/dotnet/programing/dynamicproperties.html
2017/06/17(土) 19:20:12.04ID:BEwZTU1BM
>>199
シリアライズ可能なViewModelを作成
ViewとViewModelをバインド
ViewModelをシリアライズで保存
ViewModelにデシリアライズで復元
2017/06/17(土) 19:43:42.82ID:KgLuH5ksM
テキストボックスが何十個も並んでる時点で
俺は泣くと思う

そしてそれがちゃんとしたデータ構造に格納されてないことを知り号泣すると思う
そして10分でリファクタリングを終わらせコーヒーを飲む
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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