「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください
>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■関連スレ
C#, C♯, C#相談室 Part95
http://mevius.5ch.net/test/read.cgi/tech/1508180530/
C#, C♯, C#相談室 Part93
https://mevius.5ch.net/test/read.cgi/tech/1492818720/
■前スレ
ふらっと C#,C♯,C#(初心者用) Part136
http://mevius.5ch.net/test/read.cgi/tech/1520057345/
■コードを貼る場合は↓を使いましょう。
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#(初心者用) Part137
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ドコグロ MM07-2FKJ)
2018/04/06(金) 17:40:19.48ID:oKXVP34zM348デフォルトの名無しさん (ワッチョイ bf9e-DJjQ)
2018/05/06(日) 02:05:39.13ID:dl2mQyCb0 >>346
ご回答ありがとうございます
イベントは有効です
左や上や左上への拡大縮小ドラッグは正常なのですが左下や右上がおかしいです
提供していただいたコードを試したのですが、何故かは分からないのですが rightEdge < this.Right がfalseになっています
もう少し調べてみます
ご回答ありがとうございます
イベントは有効です
左や上や左上への拡大縮小ドラッグは正常なのですが左下や右上がおかしいです
提供していただいたコードを試したのですが、何故かは分からないのですが rightEdge < this.Right がfalseになっています
もう少し調べてみます
349デフォルトの名無しさん (アウアウエー Sa82-oFLj)
2018/05/06(日) 02:22:41.56ID:xovvhFEya 申し訳ないけど、問題を再現できるそのまんまのコードを提示していない時点で
確実に原因はあなたの勘違いにあると断言できる
確実に原因はあなたの勘違いにあると断言できる
350デフォルトの名無しさん (ワッチョイ 8a98-XJxX)
2018/05/06(日) 05:58:39.10ID:CBGkbUql0 Listを値渡しすべき所が参照渡しになってたせいで
くっそハマったんだけど
こういうのって、C#の解説本1冊読めば
注意しろって書いてあるもんなの?
参照渡し云々って単語はかろうじて知ってて
↓のサイトをたまたま見つけて、偶然解決出来たけど
https://webbibouroku.com/Blog/Article/list-copy
エラーや例外にならないバグが怖すぎる・・・
くっそハマったんだけど
こういうのって、C#の解説本1冊読めば
注意しろって書いてあるもんなの?
参照渡し云々って単語はかろうじて知ってて
↓のサイトをたまたま見つけて、偶然解決出来たけど
https://webbibouroku.com/Blog/Article/list-copy
エラーや例外にならないバグが怖すぎる・・・
351デフォルトの名無しさん (ワッチョイ 0a1e-lX4z)
2018/05/06(日) 06:08:47.32ID:994JP5I00 そんなものここで聞けば3秒で解決するし
352デフォルトの名無しさん (ワッチョイ 1fe3-jSAq)
2018/05/06(日) 08:39:03.59ID:j24ysXtO0 c#って物体X(?)は全部参照渡しになるよね
353デフォルトの名無しさん (ワッチョイ faa1-XFQU)
2018/05/06(日) 08:48:15.69ID:6gN3mvyQ0 >>350
それ値渡しじゃない
それ値渡しじゃない
354デフォルトの名無しさん (ワッチョイ 03c3-XJxX)
2018/05/06(日) 09:09:18.32ID:9GXSG5IC0 イメージの配置はできるようになりましたが、いろいろ触っていると、チラツキが
気になるようになってきました
テストしてみたところ、下記のレベルでもチラツキが発生します
private void timer1_Tick(object sender, EventArgs e)
{
Graphics g = Graphics.FromImage(canvas);
g.FillEllipse(bg_brush, x, y, radius, radius);
x += 5;
g.FillEllipse(fg_brush, x, y, radius, radius);
count++;
g.Dispose();
pictureBox1.Image = canvas;
if (count == 10)
{
count = 0;
timer1.Stop();
}
}
timer1.Intervalは100msにしてあります
チラつきを押さえるには、フォームの DoubleBufferd を true にすると良いと見ましたが、
true にしても false にしても変わりないようです
そもそも PictureBox は内部処理でダブルバッファリングを行っているとも見ました
まだなにかできることはあるのでしょうか
気になるようになってきました
テストしてみたところ、下記のレベルでもチラツキが発生します
private void timer1_Tick(object sender, EventArgs e)
{
Graphics g = Graphics.FromImage(canvas);
g.FillEllipse(bg_brush, x, y, radius, radius);
x += 5;
g.FillEllipse(fg_brush, x, y, radius, radius);
count++;
g.Dispose();
pictureBox1.Image = canvas;
if (count == 10)
{
count = 0;
timer1.Stop();
}
}
timer1.Intervalは100msにしてあります
チラつきを押さえるには、フォームの DoubleBufferd を true にすると良いと見ましたが、
true にしても false にしても変わりないようです
そもそも PictureBox は内部処理でダブルバッファリングを行っているとも見ました
まだなにかできることはあるのでしょうか
355デフォルトの名無しさん (ワッチョイ 03c3-XJxX)
2018/05/06(日) 09:36:21.79ID:9GXSG5IC0 書いてませんでしたが、bg_brushは背景色の、fg_brushは前景色のブラシです
Brush bg_brush = new SolidBrush(SystemColors.Control);
Brush fg_brush = new SolidBrush(Color.Black);
で定義しています
Brush bg_brush = new SolidBrush(SystemColors.Control);
Brush fg_brush = new SolidBrush(Color.Black);
で定義しています
356デフォルトの名無しさん (ワッチョイ 1ee8-XJxX)
2018/05/06(日) 09:54:38.21ID:RTzVBomo0 canvasはどんな風に設定しているの?
357デフォルトの名無しさん (ワッチョイ 03c3-XJxX)
2018/05/06(日) 10:06:54.11ID:9GXSG5IC0 canvas = new Bitmap(pictureBox1.Width, pictureBox1.Height);
として定義しています
として定義しています
358デフォルトの名無しさん (ワッチョイ 1ee8-XJxX)
2018/05/06(日) 10:36:38.03ID:RTzVBomo0 DoubleBufferdとか触らずともこっちではちらつかないけどなあ
ちらつくってのはどういうふうに見えることを言ってるの?
panelやpictureBoxのサイズやradiusの値もさらしてみては?
ちらつくってのはどういうふうに見えることを言ってるの?
panelやpictureBoxのサイズやradiusの値もさらしてみては?
359デフォルトの名無しさん (ワッチョイ 7fd3-jSUp)
2018/05/06(日) 10:50:11.40ID:IbwjU9Qn0 どこで何やってんの不明瞭だから当てずっぽうだが
下手に自前描画してるチラつくなら大体OnPaintBackgroundのせい
下手に自前描画してるチラつくなら大体OnPaintBackgroundのせい
360デフォルトの名無しさん (ワッチョイ 03c3-XJxX)
2018/05/06(日) 10:55:03.54ID:9GXSG5IC0 https://ideone.com/s4ddqO
これが全コードです
空のWindowsフォームアプリケーションで生成されたフォームに、ボタンとパネル、
PictureBoxを配置しただけの状態です
パネルとPictureBoxは、DockをFillにしてウィンドウサイズに合わせてあります
これが全コードです
空のWindowsフォームアプリケーションで生成されたフォームに、ボタンとパネル、
PictureBoxを配置しただけの状態です
パネルとPictureBoxは、DockをFillにしてウィンドウサイズに合わせてあります
361デフォルトの名無しさん (ワッチョイ 03c3-XJxX)
2018/05/06(日) 10:56:51.16ID:9GXSG5IC0 これで、timer1のIntervalを50msにすると、はっきり分かる程度にちらつきます
362デフォルトの名無しさん (ワッチョイ bbb5-MrO9)
2018/05/06(日) 13:14:55.43ID:gzoDeGmX0 垂直同期しろ。
363デフォルトの名無しさん (アウアウエー Sa82-oFLj)
2018/05/06(日) 13:31:21.62ID:o/aLqSU5a364デフォルトの名無しさん (アウアウウー Sacf-pRpi)
2018/05/06(日) 15:35:36.42ID:MOQB+J+Ha 解決のヒントにはならないだろうけど
ちらつきって何かということについて
すでに表示されてるものが一瞬透明に見えるから表示がおかしく見えること
たとえば半径100の円が横に5ドット動くとする
普通に考えたらほとんどの円に背景は隠れたままだけど何も考えないで適当にやると
背景が一瞬見えてしまう
一度円を消してなにもない状態を表示して
次に円を書いてるから問題がある
何もない状態を表示しなければいい
ちらつきって何かということについて
すでに表示されてるものが一瞬透明に見えるから表示がおかしく見えること
たとえば半径100の円が横に5ドット動くとする
普通に考えたらほとんどの円に背景は隠れたままだけど何も考えないで適当にやると
背景が一瞬見えてしまう
一度円を消してなにもない状態を表示して
次に円を書いてるから問題がある
何もない状態を表示しなければいい
365デフォルトの名無しさん (ワッチョイ 03c3-XJxX)
2018/05/06(日) 18:19:28.93ID:9GXSG5IC0366デフォルトの名無しさん (ワッチョイ bbb5-MrO9)
2018/05/06(日) 18:22:22.08ID:gzoDeGmX0 だからハードの違いだって言ってんだろw
367デフォルトの名無しさん (アウアウエー Sa82-oFLj)
2018/05/06(日) 18:25:15.44ID:w10wIaHya368デフォルトの名無しさん (ワッチョイ bbb5-MrO9)
2018/05/06(日) 18:30:35.56ID:gzoDeGmX0 アホばっかり。
369デフォルトの名無しさん (ワッチョイ 03c3-XJxX)
2018/05/06(日) 18:55:10.27ID:9GXSG5IC0 >>367
カクカクした動きとチラつきを同一視しているわけではありません
>>364
が書いたように、今回の例だと黒い円が一瞬消えているような感じがします
移動量の x += 10; をもっと少なくすれば目立たなくなりますが、それでも
なんとなく嫌な感じがします
でも言葉で説明するのは難しいですね
低フレームレートの認識を誤解していたようですが、インターバルを100msとか
50msとかだとディスプレイのリフレッシュレート(あるいは人間の認識力)に比べて
低すぎるので、かえって目立ってしまうということでしょうか?
確かに、インターバルを思い切って5msとかにしてみると、チラつきは軽減されてきた
気がします
カクカクした動きとチラつきを同一視しているわけではありません
>>364
が書いたように、今回の例だと黒い円が一瞬消えているような感じがします
移動量の x += 10; をもっと少なくすれば目立たなくなりますが、それでも
なんとなく嫌な感じがします
でも言葉で説明するのは難しいですね
低フレームレートの認識を誤解していたようですが、インターバルを100msとか
50msとかだとディスプレイのリフレッシュレート(あるいは人間の認識力)に比べて
低すぎるので、かえって目立ってしまうということでしょうか?
確かに、インターバルを思い切って5msとかにしてみると、チラつきは軽減されてきた
気がします
370デフォルトの名無しさん (ワッチョイ 1e9a-XJxX)
2018/05/06(日) 19:33:59.43ID:7/UIZFPx0 ちょっと改変して逆にチラツキをわかるようにしてみた
https://ideone.com/3X8oJh
WinFormプロジェクトを新規で作って元のソースを全部消したうえで、このソースを既存の項目として追加
上がPictureBoxで下がPanel
>>369
PictureBoxのダブルバッファがデフォルトで有効なのは知っているのを確認したので
その上でPanelはデフォルトでダブルバッファが有効だというのを念頭に入れてコードを実行してほしい
同じオブジェクトの動きだが、うちで確認する限りは下はあきらかにチラツキがあって上は目立たない
>>364
>何もない状態を表示しなければいい
というわけで先に描画して動いた部分だけを消すという動作を実現してみたつもり
だったんだけど、移動量を大きくするとカクツキがどうしても目立ってしまってうまくいかない。ギブアップw
>>369
もっとGDI+の動作を把握するとかゲームなどでの実装方法を探すかした方がいいと思う
残念ながら俺の知識ではここまで
https://ideone.com/3X8oJh
WinFormプロジェクトを新規で作って元のソースを全部消したうえで、このソースを既存の項目として追加
上がPictureBoxで下がPanel
>>369
PictureBoxのダブルバッファがデフォルトで有効なのは知っているのを確認したので
その上でPanelはデフォルトでダブルバッファが有効だというのを念頭に入れてコードを実行してほしい
同じオブジェクトの動きだが、うちで確認する限りは下はあきらかにチラツキがあって上は目立たない
>>364
>何もない状態を表示しなければいい
というわけで先に描画して動いた部分だけを消すという動作を実現してみたつもり
だったんだけど、移動量を大きくするとカクツキがどうしても目立ってしまってうまくいかない。ギブアップw
>>369
もっとGDI+の動作を把握するとかゲームなどでの実装方法を探すかした方がいいと思う
残念ながら俺の知識ではここまで
371>>370 (ワッチョイ 1e9a-XJxX)
2018/05/06(日) 19:37:36.72ID:7/UIZFPx0 ごめん
>Panelはデフォルトでダブルバッファが有効だというのを念頭に入れて
Panelはデフォルトでダブルバッファが無効だというのを念頭に入れて
の間違い
>Panelはデフォルトでダブルバッファが有効だというのを念頭に入れて
Panelはデフォルトでダブルバッファが無効だというのを念頭に入れて
の間違い
372デフォルトの名無しさん (アウアウエー Sa82-oFLj)
2018/05/06(日) 20:17:55.74ID:LW3/RgRJa うーんw
>>360のコード自体がダブルバッファリングの実装なので、
少なくともGDI+を使う限り、これで本当にちらつくなら何をやってもちらつき回避は不可能。
何度も言うけど、少なくとも俺の環境では低フレームレート特有の不自然さはあっても
フリッカーは確認できない
しつこいようだけど、俺は質問者がちらつき(フリッカー)がどういう現象か
理解してないだけのように思う
>>360のコード自体がダブルバッファリングの実装なので、
少なくともGDI+を使う限り、これで本当にちらつくなら何をやってもちらつき回避は不可能。
何度も言うけど、少なくとも俺の環境では低フレームレート特有の不自然さはあっても
フリッカーは確認できない
しつこいようだけど、俺は質問者がちらつき(フリッカー)がどういう現象か
理解してないだけのように思う
373デフォルトの名無しさん (ワッチョイ 1fe3-jSAq)
2018/05/06(日) 20:20:58.90ID:j24ysXtO0 まあ、unity使ってもDirectX使ってもスクロールとかなめらかにならないしね
グラボも汚いってのも考慮に入れる
市販のゲームでもスクロールしてるときはカクカクグシャグシャはデフォ
グラボも汚いってのも考慮に入れる
市販のゲームでもスクロールしてるときはカクカクグシャグシャはデフォ
374デフォルトの名無しさん (ワッチョイ 03c3-XJxX)
2018/05/06(日) 20:21:41.45ID:9GXSG5IC0 >>370
ありがとうございます
私が確認しても、確かに上下で明らかにチラつきが違い、下ははっきりとわかります
上はほとんどわからないレベルですね
PictureBoxもPanelも、どちらも出来上がったビットマップを貼り付けているのですから
同じ表示になりそうな気がしますが違いますね
これをちゃんと理解できれば解決できそうです
ありがとうございます
私が確認しても、確かに上下で明らかにチラつきが違い、下ははっきりとわかります
上はほとんどわからないレベルですね
PictureBoxもPanelも、どちらも出来上がったビットマップを貼り付けているのですから
同じ表示になりそうな気がしますが違いますね
これをちゃんと理解できれば解決できそうです
375デフォルトの名無しさん (アウアウエー Sa82-oFLj)
2018/05/06(日) 20:36:30.01ID:LW3/RgRJa376デフォルトの名無しさん (ワッチョイ 03c3-XJxX)
2018/05/06(日) 20:39:37.09ID:9GXSG5IC0377デフォルトの名無しさん (ワッチョイ 1e9a-XJxX)
2018/05/06(日) 20:49:20.18ID:7/UIZFPx0 https://ideone.com/PNPIlj
蛇足だろうけどnew BitmapじゃなくPictureBox.Imageを直接描き変えるもの
>>376
370で何をしたかったかというと「ダブルバッファリングではこれ以上改善できない」事の証明
>panelを置いてその上にpictureBox1を置いてます
それは多分関係ない。panelに背景を設定すると話が変わると思うけど
実際に改善するには移動量を少なくして滑らかに見せるくらいしかおもいつかない
消える側の方でなく進行方向側でカクついているんだよなあ・・・
蛇足だろうけどnew BitmapじゃなくPictureBox.Imageを直接描き変えるもの
>>376
370で何をしたかったかというと「ダブルバッファリングではこれ以上改善できない」事の証明
>panelを置いてその上にpictureBox1を置いてます
それは多分関係ない。panelに背景を設定すると話が変わると思うけど
実際に改善するには移動量を少なくして滑らかに見せるくらいしかおもいつかない
消える側の方でなく進行方向側でカクついているんだよなあ・・・
378デフォルトの名無しさん (ワッチョイ 03c3-XJxX)
2018/05/06(日) 21:02:31.57ID:9GXSG5IC0 >>377
試してみました
>>370と変わらない感じですね
これまで質問してきた趣旨とは変わってしまいますが、
Graphics g = Graphics.FromImage(pictureBox1.Image);
これでビットマップを書き換えた後に pictureBox1.Image を書き換えていないと
いうことは、いちいち canvas ビットマップを用意して細工しなくてもよかったと
いうことでしょうか
で、本質ですが、ご提供いただいたテストプログラムでは明らかにチラつきの
改善が見られるということはダブルバッファリングは機能している、これ以上
気になるのであれば、それは滑らかさの問題であってチラつきの問題ではない、
と認識するのが良さそうですね
試してみました
>>370と変わらない感じですね
これまで質問してきた趣旨とは変わってしまいますが、
Graphics g = Graphics.FromImage(pictureBox1.Image);
これでビットマップを書き換えた後に pictureBox1.Image を書き換えていないと
いうことは、いちいち canvas ビットマップを用意して細工しなくてもよかったと
いうことでしょうか
で、本質ですが、ご提供いただいたテストプログラムでは明らかにチラつきの
改善が見られるということはダブルバッファリングは機能している、これ以上
気になるのであれば、それは滑らかさの問題であってチラつきの問題ではない、
と認識するのが良さそうですね
379デフォルトの名無しさん (ワッチョイ 7fd3-jSUp)
2018/05/06(日) 21:19:50.71ID:IbwjU9Qn0 下PanelはBackgroundImage使ってるのが悪いんじゃねえかなあ
canvasはPanelのPaintで描画するようにして
PanelのDoubleBufferedをtrueにするかOnPaintBackgroundの無効化でチラ付かなくなったよ
あとチラつきとは関係ないけどお行儀的には再描画はTickで
Invalidate(true)呼び出してPaintのタイミングはフレームワークに任せるべし
Tick毎に無駄にImage/BackgroundImageに突っ込んでるから結果的に自分で再描画してるけど
canvasはPanelのPaintで描画するようにして
PanelのDoubleBufferedをtrueにするかOnPaintBackgroundの無効化でチラ付かなくなったよ
あとチラつきとは関係ないけどお行儀的には再描画はTickで
Invalidate(true)呼び出してPaintのタイミングはフレームワークに任せるべし
Tick毎に無駄にImage/BackgroundImageに突っ込んでるから結果的に自分で再描画してるけど
380デフォルトの名無しさん (アウアウエー Sa82-oFLj)
2018/05/06(日) 21:52:55.18ID:LW3/RgRJa381デフォルトの名無しさん (ワッチョイ ea27-0vvG)
2018/05/06(日) 23:08:48.35ID:s/HjZ7Qd0 >>350
それは参照渡しになってたわけじゃない
C#の参照渡しはhoge(ref list)のようにrefがつく
あなたがハマったのは参照の値渡しでインスタンスは複製されないということ
ぺらぺらの入門書とかだとわからんが、ジェネリックやクラスをちゃんと学べる程度の本なら載ってるはず
それは参照渡しになってたわけじゃない
C#の参照渡しはhoge(ref list)のようにrefがつく
あなたがハマったのは参照の値渡しでインスタンスは複製されないということ
ぺらぺらの入門書とかだとわからんが、ジェネリックやクラスをちゃんと学べる程度の本なら載ってるはず
382デフォルトの名無しさん (ワッチョイ bbb5-MrO9)
2018/05/06(日) 23:23:27.04ID:gzoDeGmX0 グラボの性能差だから、ちらつき。
383デフォルトの名無しさん (ワッチョイ 8a7f-NrvC)
2018/05/06(日) 23:49:17.66ID:5astaXB20 >>350
List固有の問題ではなく、classは全て参照型だからだ。
だから、=で代入しても同じオブジェクトを指すだけ。
ちなみにstructは値型。こっちなら=で代入したらオブジェクトが複製される。
List固有の問題ではなく、classは全て参照型だからだ。
だから、=で代入しても同じオブジェクトを指すだけ。
ちなみにstructは値型。こっちなら=で代入したらオブジェクトが複製される。
384デフォルトの名無しさん (アウアウエー Sa82-oFLj)
2018/05/07(月) 01:29:04.63ID:inVQGvpaa >>360をFPSと速度を変えられるようにしてみたけど
思ったより面白くもないし動作も滑らかじゃないなw
どっちにしろやっぱりフリッカーは発生しない
https://ideone.com/E3V57h
ところで、タイトルバーをドラッグしたりすると画面の更新が止まる問題を
回避する方法ってなかったっけ?
思ったより面白くもないし動作も滑らかじゃないなw
どっちにしろやっぱりフリッカーは発生しない
https://ideone.com/E3V57h
ところで、タイトルバーをドラッグしたりすると画面の更新が止まる問題を
回避する方法ってなかったっけ?
385デフォルトの名無しさん (アウアウエー Sa82-oFLj)
2018/05/07(月) 01:32:11.28ID:inVQGvpaa ああ、今思ったけど、FPSは本当は実測した値を表示すべきだねw
>>384はタイマーのインターバルから計算した理論値で実測値じゃない
>>384はタイマーのインターバルから計算した理論値で実測値じゃない
386デフォルトの名無しさん (ササクッテロラ Sp23-MrO9)
2018/05/07(月) 01:32:57.05ID:3karsGmmp グラボやドライバーの違いで発生する問題を自分のところじゃ発生しないからって頭ごなしに否定する奴はどうして生きてるんだろうな?
387デフォルトの名無しさん (アウアウエー Sa82-oFLj)
2018/05/07(月) 01:42:18.83ID:inVQGvpaa >>386
それは君が勝手にそう思ってるだけw
そんな問題はWin9xの時代だって存在しなかったよ
っていうか、言っちゃわるいけどフリッカーが発生する原因を理解していればそんな間抜けな台詞は
出てこない
それは君が勝手にそう思ってるだけw
そんな問題はWin9xの時代だって存在しなかったよ
っていうか、言っちゃわるいけどフリッカーが発生する原因を理解していればそんな間抜けな台詞は
出てこない
388デフォルトの名無しさん (アウアウエー Sa82-oFLj)
2018/05/07(月) 01:43:57.94ID:inVQGvpaa なんか垂直同期(笑)とか書いてるのもいたけど、
頭の中80年代で止まってるんじゃなかろうかw
頭の中80年代で止まってるんじゃなかろうかw
389デフォルトの名無しさん (ワッチョイ de8a-a7mP)
2018/05/07(月) 04:32:44.15ID:S2Y5gzQd0 DataGridViewで、複数のカラムを基準にソートするにはどうしたらいいでしょうか。
以下のようなイメージです。
元データ
------
4 2
1 4
2 1
5 4
6 7
1 3
1 6
これを、カラムのヘッダーセルのクリック操作だけで、以下のように出来るようにしたいです。
------
1 3
1 4
1 6
2 1
4 2
5 4
6 7
以下のようなイメージです。
元データ
------
4 2
1 4
2 1
5 4
6 7
1 3
1 6
これを、カラムのヘッダーセルのクリック操作だけで、以下のように出来るようにしたいです。
------
1 3
1 4
1 6
2 1
4 2
5 4
6 7
390デフォルトの名無しさん (ワッチョイ 1e80-pKnf)
2018/05/07(月) 06:24:03.69ID:SlIACPlK0 プロパティだけでは無理
各列のSortModeはAutomatic以外にして
ColumnHeaderClickイベントで自分でソートする必要がある
実際にどうやってソートするかはDataGridViewに表示してるデータをどうやっているか次第
ところで下の状態で1番目の方のカラムヘッダをクリックしたらどうなるの?
とか色々場合があってUIというかUX?を決定するのが結構面倒
各列のSortModeはAutomatic以外にして
ColumnHeaderClickイベントで自分でソートする必要がある
実際にどうやってソートするかはDataGridViewに表示してるデータをどうやっているか次第
ところで下の状態で1番目の方のカラムヘッダをクリックしたらどうなるの?
とか色々場合があってUIというかUX?を決定するのが結構面倒
391デフォルトの名無しさん (ドコグロ MM33-XUQH)
2018/05/07(月) 06:43:05.39ID:UbBhnDZYM さすがに垂直同期はネタだろ
釣られる奴がいるとは思わなかったけど w
釣られる奴がいるとは思わなかったけど w
392デフォルトの名無しさん (ササクッテロラ Sp23-MrO9)
2018/05/07(月) 07:18:03.31ID:3karsGmmp ググって事実を知ったんだな。そんなに悔しいのか?
393デフォルトの名無しさん (ワッチョイ 1e80-SIjl)
2018/05/07(月) 08:25:49.50ID:H7YotaIo0 >>389-390
複数列でのソートは、Kotlin なら、
配列.sortedWith(compareBy({ 列1 }, { 列2 }))
C# は、よく知らないけど、こういう感じ?
配列.OrderBy(列1).ThenBy(列2)
複数列でのソートは、Kotlin なら、
配列.sortedWith(compareBy({ 列1 }, { 列2 }))
C# は、よく知らないけど、こういう感じ?
配列.OrderBy(列1).ThenBy(列2)
394デフォルトの名無しさん (ワッチョイ 0a5d-N4mI)
2018/05/07(月) 14:38:50.30ID:iApxgodj0 教えてください
キャストが上手くできずに困っています
具体的には、VisualStudioでデバッグのウォッチウィンドウに
Enumerable.Empty<int>() is IEnumerable<object>
と入力するとtrueと表示されるので少なくとも条件が整えば
IEnumerable<int> は IEnumerable<object> に
キャストできるとおもうのですが、プログラム上で安直に
Console.WriteLine(Enumerable.Empty<int>() is IEnumerable<object>);
を実行すると画面にFalseと表示されてしまいます
ウォッチウィンドウ上とプログラム上で何か条件の違いがあって
このようなことが起こっているのだとは思いますが、理解が不十分で解決方法が分かりません
そもそもIEnumerable<T>のTは共変なのでintがobjectにアップキャストできる以上
IEnumerable<int>も無条件でIEnumerable<object>にキャストできると
思っていたのですが、この部分に何か誤解があるのでしょうか
VisualStudio15.6.7、コンソールアプリ、ターゲットフレームワーク4.7.1でテストしています
よろしくお願いします
キャストが上手くできずに困っています
具体的には、VisualStudioでデバッグのウォッチウィンドウに
Enumerable.Empty<int>() is IEnumerable<object>
と入力するとtrueと表示されるので少なくとも条件が整えば
IEnumerable<int> は IEnumerable<object> に
キャストできるとおもうのですが、プログラム上で安直に
Console.WriteLine(Enumerable.Empty<int>() is IEnumerable<object>);
を実行すると画面にFalseと表示されてしまいます
ウォッチウィンドウ上とプログラム上で何か条件の違いがあって
このようなことが起こっているのだとは思いますが、理解が不十分で解決方法が分かりません
そもそもIEnumerable<T>のTは共変なのでintがobjectにアップキャストできる以上
IEnumerable<int>も無条件でIEnumerable<object>にキャストできると
思っていたのですが、この部分に何か誤解があるのでしょうか
VisualStudio15.6.7、コンソールアプリ、ターゲットフレームワーク4.7.1でテストしています
よろしくお願いします
395デフォルトの名無しさん (アウアウエー Sa82-oFLj)
2018/05/07(月) 18:57:27.81ID:cAXvX5WKa >>394
値型は不変だったような
http://ufcpp.net/study/csharp/sp4_variance.html#value
イミディエイトだとs演算子がtrueを返す理由は分かりませんw
何でしょうね
値型は不変だったような
http://ufcpp.net/study/csharp/sp4_variance.html#value
イミディエイトだとs演算子がtrueを返す理由は分かりませんw
何でしょうね
396デフォルトの名無しさん (ワッチョイ 0a5d-N4mI)
2018/05/07(月) 21:52:56.92ID:iApxgodj0 >>395
レスどうもありがとうございます。その後色々と試してみると、プログラムで
Console.WriteLine((Enumerable.Repeat(4649, 1) as IEnumerable<object>)?.First() ?? 184);
を実行すると画面には184と表示され、教えていただいとことと辻褄が合うように思います
また、これまでの結果から考えてウォッチウィンドウで
(Enumerable.Repeat(4649, 1) as IEnumerable<object>)?.First() ?? 184
の値を調べれば4649と表示されるのかなと思いきや「メモリを読み取ることができません」と表示されたので、
こちらの挙動はおっしゃる通り分からない(バグ?)と考えるしかなさそうです
ジェネリックでないIEnumerableはLINQが使えないのでこれまで
if (x is IEnumerable<object> enumerableObject)
{
...
}
と書く場面があったのですが、これではIEnumerable<値型>が拾えなさそうなので
if (x is IEnumerable enumerable)
{
var enumerableObject = enumerable as IEnumerable<object> ?? enumerable.Cast<object>();
...
}
とでも書いておこうかと思います(今のプログラムではxがジェネリックでないIEnumerableになることはないのですが)
もっと良い方法があれば教えてもらえると嬉しいです
レスどうもありがとうございます。その後色々と試してみると、プログラムで
Console.WriteLine((Enumerable.Repeat(4649, 1) as IEnumerable<object>)?.First() ?? 184);
を実行すると画面には184と表示され、教えていただいとことと辻褄が合うように思います
また、これまでの結果から考えてウォッチウィンドウで
(Enumerable.Repeat(4649, 1) as IEnumerable<object>)?.First() ?? 184
の値を調べれば4649と表示されるのかなと思いきや「メモリを読み取ることができません」と表示されたので、
こちらの挙動はおっしゃる通り分からない(バグ?)と考えるしかなさそうです
ジェネリックでないIEnumerableはLINQが使えないのでこれまで
if (x is IEnumerable<object> enumerableObject)
{
...
}
と書く場面があったのですが、これではIEnumerable<値型>が拾えなさそうなので
if (x is IEnumerable enumerable)
{
var enumerableObject = enumerable as IEnumerable<object> ?? enumerable.Cast<object>();
...
}
とでも書いておこうかと思います(今のプログラムではxがジェネリックでないIEnumerableになることはないのですが)
もっと良い方法があれば教えてもらえると嬉しいです
397デフォルトの名無しさん (ワッチョイ faeb-r3te)
2018/05/09(水) 00:08:06.32ID:98vw71AM0 名前空間A と名前空間A.B がある場合に、A.B内からAのクラスを扱うにはどうすればいいのですか?
398デフォルトの名無しさん (ワッチョイ 1e81-fCfW)
2018/05/09(水) 01:14:34.94ID:KTiGjU5t0 >>321
Aをusingすればよい
Aをusingすればよい
399デフォルトの名無しさん (ワッチョイ 1e81-fCfW)
2018/05/09(水) 01:15:21.71ID:KTiGjU5t0 なんかすげーレス間違えたけど
>>397宛
>>397宛
400デフォルトの名無しさん (ワッチョイ 1fe3-jSAq)
2018/05/09(水) 01:47:53.29ID:lSrhXmV/0 そもそも名前空間ってどうやって扱うのが正しいの?
401デフォルトの名無しさん (ワッチョイ faeb-a7mP)
2018/05/09(水) 02:09:09.87ID:98vw71AM0 >>399
クラスとは違って、やはりそうやって使うものなのですか
クラスとは違って、やはりそうやって使うものなのですか
402デフォルトの名無しさん (ササクッテロラ Sp23-MrO9)
2018/05/09(水) 02:25:39.99ID:PD0iDBLsp 完全表記しても良いんだよ?
403デフォルトの名無しさん (ワッチョイ cf17-jSUp)
2018/05/09(水) 17:57:38.22ID:8iDq54Sd0 嫌なら全部同じ名前空間内に入れ込んでしまえ
悩まなくて済むぞ
悩まなくて済むぞ
404デフォルトの名無しさん (ワッチョイ 1fe3-XJxX)
2018/05/09(水) 18:15:06.67ID:GFIhYWfG0 別に名前空間分ける意味ないよな。
405デフォルトの名無しさん (ワッチョイ 53b3-EG9I)
2018/05/09(水) 18:19:36.14ID:nbiQ9nbF0 分業の為の仕組み
406デフォルトの名無しさん (ワッチョイ 1fe3-jSAq)
2018/05/09(水) 19:48:53.19ID:lSrhXmV/0407デフォルトの名無しさん (ブーイモ MMef-fCfW)
2018/05/09(水) 19:49:33.69ID:D7X0frHnM C#好きだけどnamespaceでネスト一つ深くなるのはあかんわ
408デフォルトの名無しさん (スッップ Sdaa-xC2/)
2018/05/09(水) 20:08:50.17ID:4zjT3ksId >>406
全て自分で書くコードならいいんだけどね。サードパーティのライブラリのクラスと衝突する可能性なんていくらでもあるから。
全て自分で書くコードならいいんだけどね。サードパーティのライブラリのクラスと衝突する可能性なんていくらでもあるから。
409デフォルトの名無しさん (ワッチョイ 03e7-m5Zl)
2018/05/09(水) 20:10:07.14ID:QZYGN7xi0 >>406
書き分けのために命名が歪むのは良くない
NM1.Class/NM2.Class
NM1Class/NM2Class
単にプリフィクス付けるだけなら
名前空間があろうとなかろうとやってる事は同じ
書き分けのために命名が歪むのは良くない
NM1.Class/NM2.Class
NM1Class/NM2Class
単にプリフィクス付けるだけなら
名前空間があろうとなかろうとやってる事は同じ
410デフォルトの名無しさん (ワッチョイ 8ab3-XUQH)
2018/05/09(水) 20:22:37.87ID:SavMNDDu0 >>406
むしろ同じ名前でも被らないようにする仕組みなんだが...
むしろ同じ名前でも被らないようにする仕組みなんだが...
411デフォルトの名無しさん (ワッチョイ bbb5-MrO9)
2018/05/09(水) 20:54:59.54ID:EkWsGx0u0 やたら長い名前付けて重複を避けるのさ。
ダイビングがかったるいって?
最初のusingに書くだけだから大丈夫。
ダイビングがかったるいって?
最初のusingに書くだけだから大丈夫。
412デフォルトの名無しさん (アウアウエー Sa82-oFLj)
2018/05/09(水) 21:00:22.54ID:EHFfoX53a >>406
自分(同じチーム)で同じ名前の違うクラスが必要になるケースは
少ないが(ないことはない)他人が書いたライブラリで既に使われているのと
同じ名前が必要になるケースなんかいくらでもあるよw
例えばSystem.Drawing.Point以外のPointが使えなかったら困るでしょ
あと、名前空間の目的は名前のバッティングの回避だけじゃない。
むしろ一番の目的は分類と整理でしょ。
名前空間が使えないライブラリは全部のファイルをデスクトップに置くできない人と同じ
適切に命名され適切な階層構造をもった名前空間は索引の機能を持つし、
コードのコンテキストを明確にする。
System.Drawing.PointがPointだけで2Dグラフィックの座標だと分かるのは、
プログラマはそれがSystem.Drawing内の型だと知っているから
自分(同じチーム)で同じ名前の違うクラスが必要になるケースは
少ないが(ないことはない)他人が書いたライブラリで既に使われているのと
同じ名前が必要になるケースなんかいくらでもあるよw
例えばSystem.Drawing.Point以外のPointが使えなかったら困るでしょ
あと、名前空間の目的は名前のバッティングの回避だけじゃない。
むしろ一番の目的は分類と整理でしょ。
名前空間が使えないライブラリは全部のファイルをデスクトップに置くできない人と同じ
適切に命名され適切な階層構造をもった名前空間は索引の機能を持つし、
コードのコンテキストを明確にする。
System.Drawing.PointがPointだけで2Dグラフィックの座標だと分かるのは、
プログラマはそれがSystem.Drawing内の型だと知っているから
413デフォルトの名無しさん (ワントンキン MMa3-k/8h)
2018/05/10(木) 00:36:27.80ID:yXMj8vMdM using エイリアス ディレクティブ でggr
414デフォルトの名無しさん (ワッチョイ 6de3-V2If)
2018/05/10(木) 01:45:10.65ID:m/SOSTAZ0 >>412
普通にdrawingのcolorとmediaのcolorがバッティングしてるじゃん
それと自作のcolorとこれまた別の奴の作ったcolorがバッティングするだけでもう面倒臭くて死にそうになる
普通にdrawingのcolorとmediaのcolorがバッティングしてるじゃん
それと自作のcolorとこれまた別の奴の作ったcolorがバッティングするだけでもう面倒臭くて死にそうになる
415デフォルトの名無しさん (ワッチョイ 6de3-V2If)
2018/05/10(木) 01:55:25.02ID:m/SOSTAZ0 もっというとwpfでも別のcolor作ってんじゃん
バッティングうぜぇんだよ
こんな簡単なクラスでもう再利用効かないんだから名前空間まで作って管理するなよバカっタレかよ
当のMSからもうまともなことやってねぇっていうかできないんだから
いい加減ファンタジー設計はやめるべき
いや、もうファンタジーじゃないな
メルヘンの領域まで入ってる
バッティングうぜぇんだよ
こんな簡単なクラスでもう再利用効かないんだから名前空間まで作って管理するなよバカっタレかよ
当のMSからもうまともなことやってねぇっていうかできないんだから
いい加減ファンタジー設計はやめるべき
いや、もうファンタジーじゃないな
メルヘンの領域まで入ってる
416デフォルトの名無しさん (アウアウエー Sa13-5wbU)
2018/05/10(木) 02:19:31.02ID:di97fd/ta >>414-415
何を言ってるのか意味がわからねいよ。
何を言ってるのか意味がわからねいよ。
417デフォルトの名無しさん (ワッチョイ 237f-iSle)
2018/05/10(木) 02:30:05.52ID:yIfUPK8/0 この程度で死ぬほど面倒臭がってたら、プログラミング自体が向いてないな。
418デフォルトの名無しさん (ワッチョイ 23d2-UqMB)
2018/05/10(木) 04:06:02.42ID:R4f/WJPq0 C#8.0のpreviewきましたねえ
https://github.com/dotnet/csharplang/wiki/vNext-Preview
https://github.com/dotnet/csharplang/wiki/vNext-Preview
419デフォルトの名無しさん (ドコグロ MM93-V2If)
2018/05/10(木) 07:27:01.34ID:1WB9uyi8M >>416
バカじゃん
何でwinformにcolorあるのにwpfでも作ったの?
再利用できてないじゃん
役に立たないじゃん
名前空間分けてそれで?
新しいもの作ったら元気一杯に捨ててるじゃん
ってとこに集約する
バカじゃん
何でwinformにcolorあるのにwpfでも作ったの?
再利用できてないじゃん
役に立たないじゃん
名前空間分けてそれで?
新しいもの作ったら元気一杯に捨ててるじゃん
ってとこに集約する
420デフォルトの名無しさん (ワッチョイ 7daf-RQhD)
2018/05/10(木) 07:37:29.76ID:CKE2Ak/10 Color構造体とColorsクラスの事かな?
421デフォルトの名無しさん (ワッチョイ cb81-nFcL)
2018/05/10(木) 07:48:33.05ID:M9xdMPFN0 こいついつものアレだろ
触るな
触るな
422デフォルトの名無しさん (ドコグロ MM93-V2If)
2018/05/10(木) 08:08:52.60ID:1WB9uyi8M >>421
反論できないならcolorクラスはもう作らせないぞ
反論できないならcolorクラスはもう作らせないぞ
423デフォルトの名無しさん (アウアウウー Sa89-27Jw)
2018/05/10(木) 09:17:58.68ID:l4uhHAvqa 全く話題になってないけどC#7.3も正式リリースされたぞ
念願の where T : Enum
念願の where T : Enum
424デフォルトの名無しさん (ワッチョイ 2dd3-Iyo3)
2018/05/10(木) 09:36:24.91ID:EV77m/Hv0425デフォルトの名無しさん (ラクッペ MM01-nFcL)
2018/05/10(木) 09:51:09.75ID:2wmh3oy2M426デフォルトの名無しさん (ササクッテロラ Sp21-4FyP)
2018/05/10(木) 10:30:56.59ID:Yjx9MaDJp つか、同じ名前で違う用途に割り当てる方が難儀だろ普通は名前変える。
427デフォルトの名無しさん (スッップ Sd43-UqMB)
2018/05/10(木) 12:33:21.16ID:kan/O/6Ed >>426
だから世の中にどんだけクラスが存在すると思ってんの?
だから世の中にどんだけクラスが存在すると思ってんの?
428デフォルトの名無しさん (アウアウウー Sa89-Iyo3)
2018/05/10(木) 12:51:46.30ID:YLAKf1v1a 普通の初心者だったらSystem.IOのPathとWPFのPathが競合することが気になると思う
429デフォルトの名無しさん (アウアウウー Sa89-Iyo3)
2018/05/10(木) 12:53:40.23ID:YLAKf1v1a イギリスだったらつづりはcolour
430デフォルトの名無しさん (ワッチョイ 23e3-Iyo3)
2018/05/10(木) 19:43:14.60ID:M5rAF93d0 コロワァ
431デフォルトの名無しさん (ササクッテロラ Sp21-4FyP)
2018/05/10(木) 20:53:17.15ID:Yjx9MaDJp >>427
自前クラスを組み込むクラスの組み合わせだけ考えりゃよかんべよ。
自前クラスを組み込むクラスの組み合わせだけ考えりゃよかんべよ。
432デフォルトの名無しさん (ワッチョイ 23d2-UqMB)
2018/05/10(木) 22:10:03.44ID:R4f/WJPq0 >>431
日本語で
日本語で
433デフォルトの名無しさん (ワッチョイ 6de3-V2If)
2018/05/11(金) 00:30:31.25ID:F4aYSsq30 >>424
WPF「WinFormなんて爺さんのクラスなんて使えるかよ」
WPF「WinFormなんて爺さんのクラスなんて使えるかよ」
434デフォルトの名無しさん (アウアウウー Sa89-27Jw)
2018/05/11(金) 00:58:40.04ID:TW3IXpUfa >>433
WinFormsが定年間近の爺さんだとしたらWPFは35歳無職童貞だな
WinFormsが定年間近の爺さんだとしたらWPFは35歳無職童貞だな
435デフォルトの名無しさん (ドコグロ MM93-V2If)
2018/05/11(金) 13:52:55.21ID:sq5ITweXM drawimageって自分でクリッピングしないとはみ出たら遅い?
436デフォルトの名無しさん (ササクッテロラ Sp21-4FyP)
2018/05/11(金) 14:13:09.38ID:NZxgVNkdp formとwpfで、似て非なる部品ってどうにかならんの?
ネットで使い方調べる時、紛らわしいんだよな。
ネットで使い方調べる時、紛らわしいんだよな。
437デフォルトの名無しさん (ワッチョイ 23ea-Ca5/)
2018/05/11(金) 14:36:21.57ID:SfoScckv0 >>433
UWP「そろそろWPFさんにはご退場願おうか」
UWP「そろそろWPFさんにはご退場願おうか」
438デフォルトの名無しさん (スフッ Sd43-RQhD)
2018/05/11(金) 15:23:07.83ID:oUtXC/5od >>437
メーカー「そろそろUWP用のコントロールつくっか?」
メーカー「そろそろUWP用のコントロールつくっか?」
439デフォルトの名無しさん (ブーイモ MMeb-GlfE)
2018/05/11(金) 16:30:16.71ID:DPTi05MZM 親フォームからnewした子フォームは親とは非同期ですか?それとも同期処理となりますか?
440デフォルトの名無しさん (ブーイモ MM43-27Jw)
2018/05/11(金) 16:50:42.60ID:Kz4/xaqBM 正しい言葉の使い方では非同期だけど、たぶん君が言ってるのは同期か非同期かではなくて同じスレッドかどうかだろう
それでいえば同じスレッド
それでいえば同じスレッド
441デフォルトの名無しさん (ワッチョイ 25b5-4FyP)
2018/05/11(金) 17:48:49.51ID:n/c4W3DX0 つか、聞きたいのは、モーダルかモードレスかじゃね?
442デフォルトの名無しさん (ワッチョイ cb9a-k37M)
2018/05/11(金) 17:56:35.27ID:+Mrz0iyE0 ここで質問するときは自分が何をやりたいかを書いてもらった方がいいな
>>439
>>441の意味なら
方法 : Windows フォームをモーダルおよびモードレスで表示する
https://msdn.microsoft.com/ja-jp/library/39wcs2dh(v=vs.110).aspx
>>439
>>441の意味なら
方法 : Windows フォームをモーダルおよびモードレスで表示する
https://msdn.microsoft.com/ja-jp/library/39wcs2dh(v=vs.110).aspx
443デフォルトの名無しさん (ブーイモ MM49-GlfE)
2018/05/11(金) 19:52:53.18ID:7YPYpwobM444デフォルトの名無しさん (ワッチョイ 4b9f-ZOQu)
2018/05/11(金) 20:39:18.87ID:A7KRRugp0 ポータブルアプリの設定ファイルを扱うなら何がスタンダードですか?
XmlSerializer使ってxmlファイルにするか
Win32API経由でレガシーなiniファイルにするか。
やっぱ前者ですかね?
XmlSerializer使ってxmlファイルにするか
Win32API経由でレガシーなiniファイルにするか。
やっぱ前者ですかね?
445デフォルトの名無しさん (ブーイモ MM19-27Jw)
2018/05/11(金) 20:42:59.37ID:H5+wAeJBM >>444
今時はJSON
今時はJSON
446デフォルトの名無しさん (ワッチョイ 23d2-UqMB)
2018/05/11(金) 21:30:53.62ID:wYle0Ioy0 >>444
セオリー通りappsettings.jsonやろ普通
セオリー通りappsettings.jsonやろ普通
447デフォルトの名無しさん (ワッチョイ 6de3-V2If)
2018/05/11(金) 21:55:14.15ID:F4aYSsq30■ このスレッドは過去ログ倉庫に格納されています
ニュース
- カードじゃなくて「紙」が活躍中…健康保険の「資格確認書」 大きすぎて困惑する人も [蚤の市★]
- 「怒りに震えて涙が出た」 同性婚認めず「合憲」判断に原告が反発 「差別的な判決だ」 ★5 [ぐれ★]
- 従来の健康保険証、12月1日に期限切れ マイナ利用率は37% [蚤の市★]
- 【公明党】派遣型風俗店の女性の裸をスマホで盗撮か 徳島県議会議員の古川広志容疑者逮捕 警視庁 ★2 [nita★]
- 舛添要一「日本は亡国への道をひた走り」「相対的国力は中国が増大し日本が低下している」 [冬月記者★]
- 中国外務省「正式な発言撤回なければ受け入れず」 高市首相は台湾有事「存立危機事態」言及せずも「言及しないことと撤回は別問題」★7 [ぐれ★]
- 【DAZN】フォーミュラGP【F1 2 3 SF P】Lap1813
- ジェフユナイテッド千葉実況 vs 今治
- 巨専】 ★3
- こいせん 全レス転載禁止
- とらせん IP
- 競輪実況★1614 性病ヤリマン安東乞食
- 【悲報】婚活女子(35)「みいちゃんみたいな知的障がい者の女ですら結婚できるのに、独身の私って何なんだろうなって思う。175万いいね [483447288]
- バカ「夏より冬の方がマシ」👈明らかに冬の方がつらいだろ。夏なんてむしろ暑くてボーッとして気楽まである [856698234]
- 探してるAVがある
- 【悲報】高市早苗さん、いつの間にかもう働いて働いて働いて働いておらず馬車馬引退 宣伝費8000万円は使うのに… [597533159]
- 千春の画像くれっ
- サケブシッポちゃん可愛い🥹
