「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください
>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■前スレ
ふらっと C#,C♯,C#(初心者用) Part132
http://mevius.5ch.net/test/read.cgi/tech/1507543256/
■関連スレ
C#, C♯, C#相談室 Part95
http://mevius.5ch.net/test/read.cgi/tech/1508180530/
■コードを貼る場合は↓を使いましょう。
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
探検
ふらっと C#,C♯,C#(初心者用) Part133
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 7bde-MYX9)
2017/11/07(火) 21:11:25.20ID:LeQqgpmT0507デフォルトの名無しさん (ガックシ 0666-jqfw)
2017/11/17(金) 12:11:30.21ID:vZ4OY4a56 foreach~~
result.Add(latestDataOf(リスト, 名前))
とかのほうがいい?
result.Add(latestDataOf(リスト, 名前))
とかのほうがいい?
508デフォルトの名無しさん (ガックシ 0666-jqfw)
2017/11/17(金) 12:14:53.31ID:vZ4OY4a56 これだとおかしいか
foreachであらかじめリストから抽出しておいた名前の種類の一覧とかを与えないとあれか
foreachであらかじめリストから抽出しておいた名前の種類の一覧とかを与えないとあれか
509デフォルトの名無しさん (スプッッ Sd22-XFH7)
2017/11/17(金) 12:23:06.18ID:uCPaYCi4d 最新取る頻度が高いなら最新テーブルと履歴テーブルを分けてほしい
510デフォルトの名無しさん (ワッチョイ f9b3-HNOF)
2017/11/17(金) 13:11:41.07ID:QYCCbo0/0 推敲してから書き込めば一度で済むのに。。。
511デフォルトの名無しさん (ワッチョイ 2de3-vU7N)
2017/11/17(金) 13:38:17.44ID:45Grbd2f0512デフォルトの名無しさん (ガックシ 0666-jqfw)
2017/11/17(金) 14:48:58.50ID:y/lDgZqq6 みんなって推敲してるの?
真面目だな
俺もこれからはそうするかもしれん
真面目だな
俺もこれからはそうするかもしれん
513デフォルトの名無しさん (ワッチョイ 5e9c-TFbh)
2017/11/17(金) 15:16:56.52ID:Km51pzYd0 真面目に考えるとデータベースに更新分Insertしてからあらかじめ作ってあるビューをSelectするだけ
GroupBYや集計はDBでやった方が楽だしこっちでは表示件数や順序くらいしかいじらない
データベースといってもローカル鯖や組み込みもある、適材適所
GroupBYや集計はDBでやった方が楽だしこっちでは表示件数や順序くらいしかいじらない
データベースといってもローカル鯖や組み込みもある、適材適所
514デフォルトの名無しさん (ブーイモ MM22-GxU6)
2017/11/17(金) 17:32:51.55ID:VYtKuwzgM インサート前にソートとかボトルネックだよね
515デフォルトの名無しさん (ワンミングク MM52-TGzz)
2017/11/17(金) 18:05:42.37ID:g1yHwUG3M sources
.GroupBy(s => new { 名前, テスト回数 })
.Select(g => new {
g.Key.名前,
g.Key.テスト回数,
時間 = g.Max(s => s.時間)
});
悩むところねえなぁ
.GroupBy(s => new { 名前, テスト回数 })
.Select(g => new {
g.Key.名前,
g.Key.テスト回数,
時間 = g.Max(s => s.時間)
});
悩むところねえなぁ
516デフォルトの名無しさん (ワッチョイ 4175-jqfw)
2017/11/17(金) 18:29:28.97ID:ZBvifIa80 汎用性低いな。
517デフォルトの名無しさん (ワッチョイ 4175-jqfw)
2017/11/17(金) 18:32:42.23ID:ZBvifIa80 ListTest.GroupBy(item => item.名前).Select(group => group.OrderBy(item => item.時間).Last()).ToList()
ワシのが1番じゃろ。
ワシのが1番じゃろ。
518デフォルトの名無しさん (ワントンキン MM52-TGzz)
2017/11/17(金) 18:42:45.87ID:1r1wVT3lM よくみたら仕様ちゃうやん自分…
src.GroupBy(s => s.名前)
.SelectMany(g => g.Where(t => t.時間 == g.Max(u => u.時間));
これが王道の正解な
src.GroupBy(s => s.名前)
.SelectMany(g => g.Where(t => t.時間 == g.Max(u => u.時間));
これが王道の正解な
519デフォルトの名無しさん (ワントンキン MM52-TGzz)
2017/11/17(金) 18:50:16.49ID:1r1wVT3lM こっちのが速いかな
sec.ToLookup(s => s.名前)
.Select(g => new { g, m = g.Max(t => t.時間)
.SelectMany(p => p.g.Where(u => u.時間 == p.m);
sec.ToLookup(s => s.名前)
.Select(g => new { g, m = g.Max(t => t.時間)
.SelectMany(p => p.g.Where(u => u.時間 == p.m);
520デフォルトの名無しさん (ワッチョイ 4175-jqfw)
2017/11/17(金) 18:50:30.24ID:ZBvifIa80 そういやラムダ式の中の命名は超シンプルでいいんだったな。
>>518 最大値を探すためにループ、その値を持ち主をまた探すためにループってなんかキモくね?それが王道なのか。
>>518 最大値を探すためにループ、その値を持ち主をまた探すためにループってなんかキモくね?それが王道なのか。
521デフォルトの名無しさん (スプッッ Sd82-aK5r)
2017/11/17(金) 19:36:01.87ID:15/bjs8Fd >>482
まず時間と名前でグループ化
時間, 名前, テスト回数
2017/1/1, A氏, 3,4
2017/1/1, B氏, 1,2
2017/2/1, A氏, 1,2
2017/2/1, B氏, 1,2
2017/3/1, A氏, 1,2,3
あとは日付けでソートして名前でDistinctするかな
まず時間と名前でグループ化
時間, 名前, テスト回数
2017/1/1, A氏, 3,4
2017/1/1, B氏, 1,2
2017/2/1, A氏, 1,2
2017/2/1, B氏, 1,2
2017/3/1, A氏, 1,2,3
あとは日付けでソートして名前でDistinctするかな
522デフォルトの名無しさん (ワントンキン MM52-TGzz)
2017/11/17(金) 19:40:08.46ID:hFmoO+PyM >>520
ループ?
SelectManyはSQLで言えば結合みたいなもの
LinqのJoinだとこんな感じかな
src.GroupBy(s => s.名前)
.Join(src,
g => new { 名前 = g.Key, 時間 = g.Max(t => t.時間) },
u => new { u.名前, u.時間 },
(g, u) => u);
SelectManyの方がわかりやすいな
ループ?
SelectManyはSQLで言えば結合みたいなもの
LinqのJoinだとこんな感じかな
src.GroupBy(s => s.名前)
.Join(src,
g => new { 名前 = g.Key, 時間 = g.Max(t => t.時間) },
u => new { u.名前, u.時間 },
(g, u) => u);
SelectManyの方がわかりやすいな
523デフォルトの名無しさん (ワッチョイ 4175-jqfw)
2017/11/17(金) 19:46:57.67ID:ZBvifIa80 Maxを探すためにループ、その持ち主また探すためにWhereでループ
524デフォルトの名無しさん (ワッチョイ 6e80-IVKU)
2017/11/17(金) 20:26:05.65ID:/4Y2zvAi0 max ← 持ち主
こういう方向のリンクなら、max を探してから、持ち主も探さなきゃいけないけど、
逆方向のリンクなら、すぐ
こういう方向のリンクなら、max を探してから、持ち主も探さなきゃいけないけど、
逆方向のリンクなら、すぐ
525デフォルトの名無しさん (ワッチョイ 2de3-vU7N)
2017/11/17(金) 20:34:11.03ID:45Grbd2f0 名前、日付で降順ソートして名前ごとの最新取るだけでなげーな
526デフォルトの名無しさん (ブーイモ MMf6-/KPb)
2017/11/17(金) 20:40:49.52ID:2lBbqhr3M >>525
それ結局最後まで舐めないと全ての名前が分からないから何の意味もないぞ
それ結局最後まで舐めないと全ての名前が分からないから何の意味もないぞ
527デフォルトの名無しさん (ワッチョイ 6ee8-LGLT)
2017/11/17(金) 21:20:38.75ID:Xkp76caL0 LINQって実は裏側でforeachで回してるってホント?
528デフォルトの名無しさん (オッペケ Srd1-R8Lj)
2017/11/17(金) 21:41:36.29ID:SHrICtEWr >>527
ループは一回
ループは一回
529デフォルトの名無しさん (ワッチョイ 6e80-IVKU)
2017/11/17(金) 21:50:29.21ID:/4Y2zvAi0 例えば、100個の中から、1個を探すのは、全(線形)探索 O(n) しかできない
全データにインデックス・ハッシュがついていれば、O(1)だが、
ソートするには、全探索する必要がある
DB みたいに、B-tree でソートされているのなら、O(log n)
「アルゴリズムと計算量」を勉強して
全データにインデックス・ハッシュがついていれば、O(1)だが、
ソートするには、全探索する必要がある
DB みたいに、B-tree でソートされているのなら、O(log n)
「アルゴリズムと計算量」を勉強して
530デフォルトの名無しさん (ワッチョイ 2de3-vU7N)
2017/11/17(金) 21:53:48.98ID:45Grbd2f0531デフォルトの名無しさん (ワッチョイ 8de4-zZYI)
2017/11/17(金) 22:28:51.51ID:fmtM/py00 こんなにレスが付いてるとは思わなかった。
無事満足いく結果がとれるようになりました。
試したことないのもあって勉強になりましたありがとうございます。
無事満足いく結果がとれるようになりました。
試したことないのもあって勉強になりましたありがとうございます。
532デフォルトの名無しさん (ワッチョイ a9c9-RuWE)
2017/11/17(金) 22:41:16.10ID:bpYBjcB50 >>527
記述によっては複数回どころか毎回ループもあり得るから注意な
記述によっては複数回どころか毎回ループもあり得るから注意な
533デフォルトの名無しさん (アウアウイー Sa91-dUYE)
2017/11/17(金) 23:53:01.59ID:f2B03iH5a foreach版も作ったけど
一回回すだけで辞書はできるので計算量は減るし再利用にも便利
一回回すだけで辞書はできるので計算量は減るし再利用にも便利
534デフォルトの名無しさん (ワッチョイ f9b3-6GxS)
2017/11/18(土) 01:22:17.61ID:dA2WGfe00 DBに接続して操作するクラスを作ってるのですが、コンストラクタでDBに接続してデストラクタとDisposeで切断処理を書こうと思っています
基本的にはこのような書き方でいいのでしょうか?
各処理のメソッドで接続切断を仕込むのもあると思うのですが連続で処理する場合たとパフォーマンスの低下に繋がると思ったので気になりました
基本的にはこのような書き方でいいのでしょうか?
各処理のメソッドで接続切断を仕込むのもあると思うのですが連続で処理する場合たとパフォーマンスの低下に繋がると思ったので気になりました
535デフォルトの名無しさん (ワッチョイ 220c-KWQn)
2017/11/18(土) 01:26:06.53ID:uyqqFOTJ0 これEXISTS使うSQLの定番問題なんでその定番SQLが生成されるようにAnyするのが最速
そう、EFならね
そう、EFならね
536デフォルトの名無しさん (ワッチョイ 2de3-vU7N)
2017/11/18(土) 01:33:21.33ID:Q2wZVPR60 >>534
途中でLANケーブル抜いたらどういう動作するの?
途中でLANケーブル抜いたらどういう動作するの?
537デフォルトの名無しさん (ワッチョイ 2de3-vU7N)
2017/11/18(土) 01:34:15.67ID:Q2wZVPR60 そしてすぐに指す!
538デフォルトの名無しさん (ワッチョイ f9b3-6GxS)
2017/11/18(土) 01:37:14.30ID:dA2WGfe00 >>536
DBはローカルなんでそこは考えてませんでした
途中でDBとの接続切れたらエラー返すぐらいしか考えてないですね
そこでクラス抜けるようにするかどうかは分かりませんがデストラクタかdisposeに入ると思います
まだ実装してませんが
DBはローカルなんでそこは考えてませんでした
途中でDBとの接続切れたらエラー返すぐらいしか考えてないですね
そこでクラス抜けるようにするかどうかは分かりませんがデストラクタかdisposeに入ると思います
まだ実装してませんが
539デフォルトの名無しさん (ワッチョイ f9b3-6GxS)
2017/11/18(土) 01:37:59.01ID:dA2WGfe00 >>535
接続部分はAnyでまとめた文打ち込む前後だけ開くってことでしょうか?
接続部分はAnyでまとめた文打ち込む前後だけ開くってことでしょうか?
540デフォルトの名無しさん (ワッチョイ 220c-KWQn)
2017/11/18(土) 02:05:22.67ID:uyqqFOTJ0 >>539
悪いが俺のレスは質問と関係ないぞ
ちなみに各DBのコネクションクラスは質問通りのIDisposableな自動Close設計で
連続する処理する場合はコネクションを開いたまま使いまわすのが普通
SQLite.NETが参考と言うかやりたいことそのままじゃないか?
悪いが俺のレスは質問と関係ないぞ
ちなみに各DBのコネクションクラスは質問通りのIDisposableな自動Close設計で
連続する処理する場合はコネクションを開いたまま使いまわすのが普通
SQLite.NETが参考と言うかやりたいことそのままじゃないか?
541デフォルトの名無しさん (ワッチョイ f9b3-6GxS)
2017/11/18(土) 02:09:22.40ID:dA2WGfe00 >>540
ありがとうございます!
ありがとうございます!
542デフォルトの名無しさん (ワッチョイ 4175-jqfw)
2017/11/18(土) 02:43:03.59ID:NMU9eY0n0 >>540
ありがとうございます!
ありがとうございます!
543デフォルトの名無しさん (ワッチョイ c2d4-ouXu)
2017/11/18(土) 16:41:16.80ID:S0Dl2HXu0 >>540
ありがとうございます!
ありがとうございます!
544デフォルトの名無しさん (ワッチョイ 8df7-jW/K)
2017/11/18(土) 17:07:33.62ID:18CT9AkR0 https://ideone.com/a5csSX
たくさんボタンがあって、ボタンを押すとそれに対応した画像を保存するプログラムなのですが
ひとつのsaveFileDialogを使いまわすにはどうすればいいでしょうか
上のコードのpictureBox_1、pictureBox_2が引数になる様にしたいのですが
たくさんボタンがあって、ボタンを押すとそれに対応した画像を保存するプログラムなのですが
ひとつのsaveFileDialogを使いまわすにはどうすればいいでしょうか
上のコードのpictureBox_1、pictureBox_2が引数になる様にしたいのですが
545デフォルトの名無しさん (ガックシ 0666-jqfw)
2017/11/18(土) 17:30:37.37ID:mVpmRSdA6546デフォルトの名無しさん (ワッチョイ 6e9a-GXP8)
2017/11/18(土) 17:33:50.19ID:v7G/T0vB0 >>544
ボタンで分岐ならすぐできる
private void button_Click(object sender, EventArgs e)
{
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
if (saveFileDialog1.ShowDialog() != DialogResult.OK)) return;
if (sender==button1)
{
pictureBox_1.Image.Save(saveFileDialog1.FileName, System.Drawing.Imaging.ImageFormat.Bmp)
}
else if (sender==button2)
{
}
}
ボタンで分岐ならすぐできる
private void button_Click(object sender, EventArgs e)
{
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
if (saveFileDialog1.ShowDialog() != DialogResult.OK)) return;
if (sender==button1)
{
pictureBox_1.Image.Save(saveFileDialog1.FileName, System.Drawing.Imaging.ImageFormat.Bmp)
}
else if (sender==button2)
{
}
}
547デフォルトの名無しさん (ワッチョイ fe9f-aK5r)
2017/11/18(土) 18:31:43.88ID:+tDuSBLG0 >>544
ボタン事に対応したピクチャーボックスがあるならTagに設定しておくと便利だよ
button1.Tag=pictureBox_1;ってしといて
((PictureBox)(((Button)sender).Tag)).Imageって感じで画像を取得できる
ボタン事に対応したピクチャーボックスがあるならTagに設定しておくと便利だよ
button1.Tag=pictureBox_1;ってしといて
((PictureBox)(((Button)sender).Tag)).Imageって感じで画像を取得できる
548デフォルトの名無しさん (ワンミングク MM52-TGzz)
2017/11/18(土) 19:04:31.90ID:yU1kJYivM void RegisterClickEvent(Button b, PictureBox p)
{
var d = new SaveFileDialog();
b.Click += (s, e) => {
if (d.ShowDialog() == DialogResult.OK) {
p.Image.Save(d.FileName, ...);
}
}
}
// on load
var pairs = new [] {
new { b = button_1, p = pbox_1 },
new { b = button_2, p = pbox_2 },
...
};
foreach(var pair in pairs)
RegisterClickEvent(pair.b, pair.p);
{
var d = new SaveFileDialog();
b.Click += (s, e) => {
if (d.ShowDialog() == DialogResult.OK) {
p.Image.Save(d.FileName, ...);
}
}
}
// on load
var pairs = new [] {
new { b = button_1, p = pbox_1 },
new { b = button_2, p = pbox_2 },
...
};
foreach(var pair in pairs)
RegisterClickEvent(pair.b, pair.p);
549デフォルトの名無しさん (ワッチョイ 8df7-jW/K)
2017/11/18(土) 19:27:10.06ID:18CT9AkR0 みなさん有難う御座います。
やってみます。
やってみます。
550デフォルトの名無しさん (ワッチョイ 4175-jqfw)
2017/11/18(土) 19:30:23.03ID:NMU9eY0n0 こんなところにもちゃっかり匿名クラスw
551デフォルトの名無しさん (アウアウエー Sa0a-5Bo2)
2017/11/18(土) 20:21:22.01ID:6NKrq56ga >>544
まずSaveFileDialogのFileOKイベントを使ってるのがまずいくない?
これだと結局FileOKのイベントハンドラに引き渡すためだけにImageかパスをフィールドに持つ必要が出てくる
private string AskSaveNameFromUser()
{
var sfd = new SaveFileDialog();
sfd.DefaultExt = "bmp";
sfd.Filter = "BMP形式|*.bmp";
if (sfd.ShowDialog(this) == DialogResult.OK)
{
return sfd.FileName;
}
return null;
}
こんな風にユーザーから保存名を貰ってくるメソッドを作った方がいいんじゃない?
まずSaveFileDialogのFileOKイベントを使ってるのがまずいくない?
これだと結局FileOKのイベントハンドラに引き渡すためだけにImageかパスをフィールドに持つ必要が出てくる
private string AskSaveNameFromUser()
{
var sfd = new SaveFileDialog();
sfd.DefaultExt = "bmp";
sfd.Filter = "BMP形式|*.bmp";
if (sfd.ShowDialog(this) == DialogResult.OK)
{
return sfd.FileName;
}
return null;
}
こんな風にユーザーから保存名を貰ってくるメソッドを作った方がいいんじゃない?
552デフォルトの名無しさん (アウアウエー Sa0a-5Bo2)
2017/11/18(土) 20:22:04.37ID:6NKrq56ga その上で
private bool TrySaveImage(Image img)
{
var savePath = AskSaveNameFromUser();
if (savePath == null) return false;
try
{
img.Save(savePath, ImageFormat.Bmp);
}
catch (Exception)
{
return false;
}
return true;
}
こんなメソッドを用意すれば、後はラムダ式使ってボタンのclickイベントにこれを紐づけするだけ
button1.Click += (s, e) => TrySaveImage(pictureBox1.Image);
private bool TrySaveImage(Image img)
{
var savePath = AskSaveNameFromUser();
if (savePath == null) return false;
try
{
img.Save(savePath, ImageFormat.Bmp);
}
catch (Exception)
{
return false;
}
return true;
}
こんなメソッドを用意すれば、後はラムダ式使ってボタンのclickイベントにこれを紐づけするだけ
button1.Click += (s, e) => TrySaveImage(pictureBox1.Image);
553デフォルトの名無しさん (ワッチョイ 4175-jqfw)
2017/11/18(土) 20:36:23.54ID:NMU9eY0n0 ボタン押した時に保存したいんだからClickイベントハンドラの中に記述すればいいだろ。
554デフォルトの名無しさん (ワッチョイ f9b3-L/2a)
2017/11/18(土) 20:42:16.49ID:2DwFpZ7T0 フォームで画像を表示したところ、それを閉じなければコンソールに処理が戻らないプログラムになってしまいました
同時に動かす方法があれば教えていただきたいです
同時に動かす方法があれば教えていただきたいです
555デフォルトの名無しさん (ワッチョイ 6e9a-GXP8)
2017/11/18(土) 20:46:06.00ID:v7G/T0vB0556デフォルトの名無しさん (ワンミングク MM52-Dzd0)
2017/11/18(土) 20:46:26.41ID:9PzaXhXFM START をコマンド名の前に書いても?
とエスパー回答
とエスパー回答
557デフォルトの名無しさん (ワッチョイ 6e9a-GXP8)
2017/11/18(土) 20:48:58.44ID:v7G/T0vB0 モーダルフォームで表示しているのならモードレスフォームにして表示
https://dobon.net/vb/dotnet/form/showform.html
https://dobon.net/vb/dotnet/form/showform.html
558デフォルトの名無しさん (ワッチョイ 4175-jqfw)
2017/11/18(土) 20:53:01.78ID:NMU9eY0n0 >>554
Threadを使おう
var thread = new System.Threading.Thread(
() => {
System.Windows.Forms.Application.Run(form);
});
thread.Start();
Threadを使おう
var thread = new System.Threading.Thread(
() => {
System.Windows.Forms.Application.Run(form);
});
thread.Start();
559デフォルトの名無しさん (アウアウエー Sa0a-5Bo2)
2017/11/18(土) 20:57:25.99ID:6NKrq56ga 一つのプロセスで複数のUIスレッド作って大丈夫なんだっけ?
560デフォルトの名無しさん (ワッチョイ f9b3-GXP8)
2017/11/18(土) 21:01:09.80ID:GCI+mPsu0 すみません、上手く説明できないと思うので一応コードも載せます
やりたいことはコマンドプロンプト上で流れる処理の途中で画像を呼び出すことです
その際、処理が止まってしまいます
var form = new System.Windows.Forms.Form();
var pb = new System.Windows.Forms.PictureBox();
pb.Image = System.Drawing.Image.FromFile(imgpath);
pb.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
form.Controls.Add(pb);
System.Windows.Forms.Application.Run(form);
やりたいことはコマンドプロンプト上で流れる処理の途中で画像を呼び出すことです
その際、処理が止まってしまいます
var form = new System.Windows.Forms.Form();
var pb = new System.Windows.Forms.PictureBox();
pb.Image = System.Drawing.Image.FromFile(imgpath);
pb.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
form.Controls.Add(pb);
System.Windows.Forms.Application.Run(form);
561デフォルトの名無しさん (ワッチョイ f9b3-GXP8)
2017/11/18(土) 21:02:37.60ID:GCI+mPsu0 途中で送信してしまいました・・
頂いた返事から色々と試してみようと思います!
頂いた返事から色々と試してみようと思います!
562デフォルトの名無しさん (ワッチョイ 4175-jqfw)
2017/11/18(土) 21:03:01.96ID:NMU9eY0n0 >>560
var form = new System.Windows.Forms.Form();
var pb = new System.Windows.Forms.PictureBox();
pb.Image = System.Drawing.Image.FromFile(imgpath);
pb.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
form.Controls.Add(pb);
var thread = new System.Threading.Thread(
() => {
System.Windows.Forms.Application.Run(form);
});
thread.Start();
var form = new System.Windows.Forms.Form();
var pb = new System.Windows.Forms.PictureBox();
pb.Image = System.Drawing.Image.FromFile(imgpath);
pb.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
form.Controls.Add(pb);
var thread = new System.Threading.Thread(
() => {
System.Windows.Forms.Application.Run(form);
});
thread.Start();
563デフォルトの名無しさん (ワッチョイ 6e9a-GXP8)
2017/11/18(土) 21:04:16.09ID:v7G/T0vB0564デフォルトの名無しさん (ワッチョイ 4175-jqfw)
2017/11/18(土) 21:06:38.70ID:NMU9eY0n0 Application.Runをしないとメッセージ来ねえからShowしても一瞬で消えるだろ。
565デフォルトの名無しさん (ワッチョイ 6e9a-GXP8)
2017/11/18(土) 21:07:12.07ID:v7G/T0vB0 じゃあ別スレッドでやるしかないのか
566デフォルトの名無しさん (ワッチョイ f9b3-GXP8)
2017/11/18(土) 21:19:47.80ID:GCI+mPsu0567デフォルトの名無しさん (オッペケ Srd1-R8Lj)
2017/11/18(土) 21:23:57.35ID:D1AcCkIgr Task使え!
568デフォルトの名無しさん (ワッチョイ 6e9a-GXP8)
2017/11/18(土) 21:26:29.84ID:v7G/T0vB0 >>560
その部分全部を別クラスにしてインスタンスを作って呼び出せば動いた
実際に呼び出す部分は
formtest f = new formtest();
f.formshow();
を入れておいて
別クラスで例えば
class formtest:Form
{
public formtest()
{ }
public void formshow()
{
var form = new System.Windows.Forms.Form();
var pb = new System.Windows.Forms.PictureBox();
pb.Image = System.Drawing.Image.FromFile(imgpath);
pb.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
form.Controls.Add(pb);
System.Windows.Forms.Application.Run(form);
}
}
を作っておく
>>566
ああちょっと遅かったか
その部分全部を別クラスにしてインスタンスを作って呼び出せば動いた
実際に呼び出す部分は
formtest f = new formtest();
f.formshow();
を入れておいて
別クラスで例えば
class formtest:Form
{
public formtest()
{ }
public void formshow()
{
var form = new System.Windows.Forms.Form();
var pb = new System.Windows.Forms.PictureBox();
pb.Image = System.Drawing.Image.FromFile(imgpath);
pb.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
form.Controls.Add(pb);
System.Windows.Forms.Application.Run(form);
}
}
を作っておく
>>566
ああちょっと遅かったか
570デフォルトの名無しさん (ワッチョイ f9b3-GXP8)
2017/11/18(土) 21:36:41.17ID:GCI+mPsu0571デフォルトの名無しさん (ワッチョイ 6e9a-GXP8)
2017/11/18(土) 21:37:46.34ID:v7G/T0vB0572デフォルトの名無しさん (ワッチョイ 6ee8-LGLT)
2017/11/18(土) 21:50:58.81ID:AvOAupbn0 変数がNULLだったら、ってこれが一番シンプル?
a == null ? 0 : 1;
a == null ? 0 : 1;
573デフォルトの名無しさん (ワッチョイ f9b3-GXP8)
2017/11/18(土) 21:55:24.54ID:GCI+mPsu0574デフォルトの名無しさん (ワッチョイ c219-GXP8)
2017/11/18(土) 21:56:43.57ID:kl8n9Pj50 >>572
つ ?? 演算子
つ ?? 演算子
575デフォルトの名無しさん (ワッチョイ 02b3-ZIVp)
2017/11/18(土) 22:13:06.30ID:ScUjvH+z0576デフォルトの名無しさん (ワッチョイ c219-GXP8)
2017/11/18(土) 22:17:16.38ID:kl8n9Pj50 >>575
書けない。nullの場合の値設定のみ。
書けない。nullの場合の値設定のみ。
577デフォルトの名無しさん (ワッチョイ 6ee8-LGLT)
2017/11/18(土) 22:17:39.50ID:AvOAupbn0 NULLじゃなかった場合の処理が要らない場合は>>574がベスト?
578デフォルトの名無しさん (ワッチョイ 7d17-RjUU)
2017/11/18(土) 22:20:13.27ID:w1kiMD3J0 a == null ? 0 : a;
a ?? 0;
は同じ内容になる
a ?? 0;
は同じ内容になる
579デフォルトの名無しさん (ワッチョイ 6ee8-LGLT)
2017/11/18(土) 22:21:15.58ID:AvOAupbn0580デフォルトの名無しさん (ワッチョイ c219-GXP8)
2017/11/18(土) 22:47:38.85ID:kl8n9Pj50 ぬるぽ
581デフォルトの名無しさん (ワッチョイ e9a6-RuWE)
2017/11/18(土) 23:05:35.11ID:VG3ktzhs0 Unity+C#の質問になっちゃいますが、
=========================================
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Ball_Ctrl : MonoBehaviour
{
public float speed = 50.0f;
void Update ()
{
Vector3 test = new Vector3();
test.x = Input.GetAxis("Vertical") * speed * Time.deltaTime;
transform.Rotate( test );
}
}
==========================================
これをキューブ型の3Dオブジェクトにぶち込むと上下キーで回転するんだけど、
これに回転制限を設けたい場合どうすればいいか教えてください!
=========================================
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Ball_Ctrl : MonoBehaviour
{
public float speed = 50.0f;
void Update ()
{
Vector3 test = new Vector3();
test.x = Input.GetAxis("Vertical") * speed * Time.deltaTime;
transform.Rotate( test );
}
}
==========================================
これをキューブ型の3Dオブジェクトにぶち込むと上下キーで回転するんだけど、
これに回転制限を設けたい場合どうすればいいか教えてください!
582デフォルトの名無しさん (ワッチョイ 2de3-vU7N)
2017/11/18(土) 23:23:09.15ID:Wsch61C00583デフォルトの名無しさん (ワッチョイ 4175-jqfw)
2017/11/18(土) 23:30:02.55ID:NMU9eY0n0 >>581
test.x = Input.GetAxis("Vertical") * speed * Time.deltaTime;
// minAngle〜maxAngleの間に制限
var minAngle=20f;
var maxAngle=160f;
test.x=test.x<minAngle?minAngle:test.x;
test.x=test.x>maxAngle?maxAngle:test.x;
test.x = Input.GetAxis("Vertical") * speed * Time.deltaTime;
// minAngle〜maxAngleの間に制限
var minAngle=20f;
var maxAngle=160f;
test.x=test.x<minAngle?minAngle:test.x;
test.x=test.x>maxAngle?maxAngle:test.x;
584581 (ワッチョイ e9a6-RuWE)
2017/11/19(日) 00:15:02.15ID:+rKwXo5m0 >>582
>>583
この説明受けてもまだチンプンカンプンで申し訳ないのですが、
実際に角度を変えている「transform.Rotate」ってのが
「現在の角度+test.x」って事だから、
if文で、
もし現在の角度がmin°〜max°以内の範囲ならば
test.x = Input.GetAxis("Vertical") * speed * Time.deltaTime;
って事ですかね?
現在値なら
genzaiti = this.transform.eulerAngles.x;
で現在の角度を取得出来るんですが、
なんか上手くいかない・・・
>>583の
test.x=test.x<minAngle?minAngle:test.x;
test.x=test.x>maxAngle?maxAngle:test.x;
の記述も意味がよく分からないです・・・
>>583
この説明受けてもまだチンプンカンプンで申し訳ないのですが、
実際に角度を変えている「transform.Rotate」ってのが
「現在の角度+test.x」って事だから、
if文で、
もし現在の角度がmin°〜max°以内の範囲ならば
test.x = Input.GetAxis("Vertical") * speed * Time.deltaTime;
って事ですかね?
現在値なら
genzaiti = this.transform.eulerAngles.x;
で現在の角度を取得出来るんですが、
なんか上手くいかない・・・
>>583の
test.x=test.x<minAngle?minAngle:test.x;
test.x=test.x>maxAngle?maxAngle:test.x;
の記述も意味がよく分からないです・・・
585デフォルトの名無しさん (ワッチョイ 4175-jqfw)
2017/11/19(日) 00:22:50.41ID:5IbV37Zg0 genzaiti = this.transform.eulerAngles.x;
if(genzaiti>=min && genzaiti<=max) {
test.x = Input.GetAxis("Vertical") * speed * Time.deltaTime;
}
こうしてもうまくいかないってこと?
if(genzaiti>=min && genzaiti<=max) {
test.x = Input.GetAxis("Vertical") * speed * Time.deltaTime;
}
こうしてもうまくいかないってこと?
586デフォルトの名無しさん (ワッチョイ 2de3-vU7N)
2017/11/19(日) 00:46:45.14ID:nVHpanKs0 >>584
ああ、transformって姿勢行列か
だったらtransform→angleの変換は期待しない方がいい
angle→transformは一方通行として
現在のangleを保持して
毎回transformをangleから作る感じで
ああ、transformって姿勢行列か
だったらtransform→angleの変換は期待しない方がいい
angle→transformは一方通行として
現在のangleを保持して
毎回transformをangleから作る感じで
587デフォルトの名無しさん (ワッチョイ e9a6-RuWE)
2017/11/19(日) 00:50:00.47ID:+rKwXo5m0 using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Ball_Ctrl : MonoBehaviour
{
public float speed = 50.0f;
public float genzaiti;
public float min = -15.0f;
public float max = 15.0f;
void Update ()
{
Vector3 test = new Vector3();
genzaiti = this.transform.eulerAngles.x;
if (genzaiti >= min && genzaiti <= max)
{
test.x = Input.GetAxis("Vertical") * speed * Time.deltaTime;
}
transform.Rotate( test );
}
}
====================================
教えて頂き、こうしてみたんですが
挙動がおかしいです
if文的に
↑をおしてmaxを超えるとキー入力を受け付けなくなるのは理解出来るんですが、
↓キーをおすとgenzaitiが359とか謎の数値になるのが理解できない・・・
using System.Collections.Generic;
using UnityEngine;
public class Ball_Ctrl : MonoBehaviour
{
public float speed = 50.0f;
public float genzaiti;
public float min = -15.0f;
public float max = 15.0f;
void Update ()
{
Vector3 test = new Vector3();
genzaiti = this.transform.eulerAngles.x;
if (genzaiti >= min && genzaiti <= max)
{
test.x = Input.GetAxis("Vertical") * speed * Time.deltaTime;
}
transform.Rotate( test );
}
}
====================================
教えて頂き、こうしてみたんですが
挙動がおかしいです
if文的に
↑をおしてmaxを超えるとキー入力を受け付けなくなるのは理解出来るんですが、
↓キーをおすとgenzaitiが359とか謎の数値になるのが理解できない・・・
588デフォルトの名無しさん (ワッチョイ 2de3-vU7N)
2017/11/19(日) 01:17:17.13ID:nVHpanKs0 >>587
359=-1やんけ?
359=-1やんけ?
589デフォルトの名無しさん (ワッチョイ 4175-jqfw)
2017/11/19(日) 07:08:15.26ID:5IbV37Zg0590デフォルトの名無しさん (ワッチョイ 4175-jqfw)
2017/11/19(日) 07:19:50.08ID:5IbV37Zg0 すまん、これは間違い
591デフォルトの名無しさん (ワッチョイ f9b3-AWKa)
2017/11/19(日) 09:53:15.87ID:RgqRbH7C0 RubyはPerlより優れていてPythonより劣っている。
592デフォルトの名無しさん (ワッチョイ 9171-jqfw)
2017/11/19(日) 12:26:49.81ID:/vA5wcYG0593デフォルトの名無しさん (ワッチョイ c219-GXP8)
2017/11/19(日) 12:35:27.94ID:E5DVFTo40 もう、自分でゴリゴリロジックを書くのが馬鹿らしくなってきた。
何処かの偉い人が言っていたが今のプログラミングは工学じゃなくて科学だと。
nugetか何処かでライブラリを拾ってきて、ひたすら実験を繰り返し、
自分の期待通りの結果が得られるかどうか判定するのみ。
何処かの偉い人が言っていたが今のプログラミングは工学じゃなくて科学だと。
nugetか何処かでライブラリを拾ってきて、ひたすら実験を繰り返し、
自分の期待通りの結果が得られるかどうか判定するのみ。
594デフォルトの名無しさん (ワンミングク MM52-TGzz)
2017/11/19(日) 13:13:49.58ID:CpArH3DxM ドメインロジックもそれでできるならいいけどね
できないでしょ
できないでしょ
595デフォルトの名無しさん (アウアウエー Sa0a-5Bo2)
2017/11/19(日) 13:23:38.14ID:4mwAxl/ka596デフォルトの名無しさん (ワッチョイ 5e9c-TFbh)
2017/11/19(日) 13:31:47.12ID:T31pkR2W0 今週はずっとlockとかMoniterとかManualResetEventSlimとか
new Thread(new ThreadStartとかTask.Factory.StartNewとかTask.Run
などなど書いていて頭痛くなってきた、やり方いろいろありすぎ
new Thread(new ThreadStartとかTask.Factory.StartNewとかTask.Run
などなど書いていて頭痛くなってきた、やり方いろいろありすぎ
597デフォルトの名無しさん (ワンミングク MM52-TGzz)
2017/11/19(日) 13:34:25.58ID:CpArH3DxM 今だとほとんど使わないよねその手の非同期ライブラリ
598581 (ワッチョイ e9a6-RuWE)
2017/11/19(日) 13:39:52.27ID:+rKwXo5m0 >>592
ひとまずこれをブチ込んでみたら思った通りに動いた!
よく見つけてくれましたね!ありがとうございます!
いまから一個ずつ理解するため勉強します。
他のみなさんも親切にどうもありがとうございました!
今回の件はとりあえず一件落着です。
ひとまずこれをブチ込んでみたら思った通りに動いた!
よく見つけてくれましたね!ありがとうございます!
いまから一個ずつ理解するため勉強します。
他のみなさんも親切にどうもありがとうございました!
今回の件はとりあえず一件落着です。
599デフォルトの名無しさん (ワッチョイ c219-GXP8)
2017/11/19(日) 13:40:17.88ID:E5DVFTo40 >>595
現代のプログラミングは科学だって言ってるのオレじゃないけどねw
ソフトウエアってパーツや材料みたいなきちんとしたスペックなんかは無いし
ソースが巨大でブラックボックス化しているので
自然科学の実験と観察のようだと皮肉って言ってるんだと思う。
現代のプログラミングは科学だって言ってるのオレじゃないけどねw
ソフトウエアってパーツや材料みたいなきちんとしたスペックなんかは無いし
ソースが巨大でブラックボックス化しているので
自然科学の実験と観察のようだと皮肉って言ってるんだと思う。
600デフォルトの名無しさん (ワッチョイ c219-GXP8)
2017/11/19(日) 13:42:55.02ID:E5DVFTo40 >>598 の人も実験と観察の世界だw
601デフォルトの名無しさん (ブーイモ MM22-/KPb)
2017/11/19(日) 13:44:15.53ID:Plho4dsNM >>597
いや全部使うだろ
マルチスレッドといえば、社内にParallel厨がいてうざいわ
ボトルネックになってないのに無駄に並列化するのやめろ
オーバーヘッドを増やすだけで全く速くなってないんだよ
いや全部使うだろ
マルチスレッドといえば、社内にParallel厨がいてうざいわ
ボトルネックになってないのに無駄に並列化するのやめろ
オーバーヘッドを増やすだけで全く速くなってないんだよ
602デフォルトの名無しさん (ワンミングク MM52-TGzz)
2017/11/19(日) 13:47:26.35ID:CpArH3DxM603デフォルトの名無しさん (ワンミングク MM52-TGzz)
2017/11/19(日) 13:49:44.71ID:CpArH3DxM Taskは使う
他は保守性下げるから使いたくないし使わなくても問題ない
他は保守性下げるから使いたくないし使わなくても問題ない
604デフォルトの名無しさん (ワッチョイ c219-GXP8)
2017/11/19(日) 13:52:13.40ID:E5DVFTo40605デフォルトの名無しさん (ワッチョイ a9c9-RuWE)
2017/11/19(日) 15:22:20.18ID:k+hZMr200 Taskは普通に使うけど、わざわざThreadを使うケースってなんかあったっけ?
606デフォルトの名無しさん (ワッチョイ c219-GXP8)
2017/11/19(日) 15:32:26.34ID:E5DVFTo40607デフォルトの名無しさん (ワッチョイ a9c9-RuWE)
2017/11/19(日) 15:44:54.87ID:k+hZMr200 >>606
LongRunningじゃダメなの?
LongRunningじゃダメなの?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★9 [ぐれ★]
- 【news23】小川彩佳アナ「ここまでの広がりになるということを、高市総理はどれだけ想像できていたんでしょうね」 日中問題特集で [冬月記者★]
- 【野球】大谷翔平、佐々木朗希、山本由伸らがWBC辞退なら広がる不協和音… 『過去イチ盛り上がらない大会』になる可能性も★2 [冬月記者★]
- 「町中華」の“息切れ倒産”が増加 ブームにも支えられ職人技で踏ん張ってきたが… 大手チェーンは値上げでも絶好調 [ぐれ★]
- 毛寧(もう・ねい)報道官「中国に日本の水産品の市場は無い」 高市首相の国会答弁に「中国民衆の強い怒り」 ★2 [ぐれ★]
- 【国際】ロシアはすでに戦争準備段階――ポーランド軍トップが警告 ★2 [ぐれ★]
- 【高市核兵器】 小泉コメ防衛大臣「民主党政権 岡田外務大臣の “非核三原則” に関する国会答弁を引き継いでいる」 政策堅持を明言 [485983549]
- 農民の末裔って畑持ってるの?
- 【高市賃上げ】 自民党&維新の会「国会議員の給与を 月5万円アップさせる!」 今国会で歳費法改正。 月129万円→月134万円に [485983549]
- 青髭がない男がいたんですよ~
- 【速報】2025プロ野球の流行語トップ30が発表される
- ㊗157円 [194819832]
