C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: スクロールバーの位置が勝手に戻ってしまう


(過去ログ 136 を表示中)

[トピック内 9 記事 (1 - 9 表示)]  << 0 >>

■80054 / inTopicNo.1)  スクロールバーの位置が勝手に戻ってしまう
  
□投稿者/ 工事 (1回)-(2016/06/08(Wed) 09:59:50)

分類:[.NET 全般] 

お世話になります。

Panelにスクロールバーを表示させ、
つまみをつかんだ状態でスクロールバーからある程度離れると、
スクロール位置がつまみを最初につかんだ位置にリセットされてしまうのですが、
これを回避(リセットせずにスクロール位置を保持)する方法を検討しています。

リセットされてしまうこと自体を無効にできれば一番良いと考えているのですが、
そのような方法はあったりするのでしょうか?

現在、その方法が分からないため、
スクロール位置の記憶+マウスボタンの押下判定+マウスの座標などを組み合わせて
panel_Scrollイベントでスクロール位置を指定しようかとも考えているのですが、
根本的にやり方が間違っている気がしていまして、ご質問させていただきました。

こちらにも同様の現象について述べられていることを確認しましたが、解決には至りませんでした。
http://blogs.wankuma.com/youryella/archive/2007/09/03/93702.aspx

[環境]
言語:C#
.NET:4.5
OS:Windows10

引用返信 編集キー/
■80055 / inTopicNo.2)  Re[1]: スクロールバーの位置が勝手に戻ってしまう
□投稿者/ ぶなっぷ (88回)-(2016/06/08(Wed) 10:09:49)
2016/06/08(Wed) 10:10:50 編集(投稿者)
「スクロールバーの位置が勝手に戻ってしまう」ことが良いか悪いかは別として、
Windows標準のようなので、標準動作を自作アプリでは置き換えてしまうことは
賛成できません。

所詮、他のアプリはほとんど全て
「スクロールバーの位置が勝手に戻ってしまう」
のですから。

それを承知の上で、なお修正したいなら、マウスをキャプチャする必要が
あるのかな?
(C++時代の知識なので、.NETで同じ手法が使えるのかは未確認です、すいません)

引用返信 編集キー/
■80056 / inTopicNo.3)  Re[2]: スクロールバーの位置が勝手に戻ってしまう
□投稿者/ ?H?? (1回)-(2016/06/08(Wed) 11:24:22)
No80055 (ぶなっぷ さん) に返信
> 2016/06/08(Wed) 10:10:50 編集(投稿者)
>
> 「スクロールバーの位置が勝手に戻ってしまう」ことが良いか悪いかは別として、
> Windows標準のようなので、標準動作を自作アプリでは置き換えてしまうことは
> 賛成できません。
>
> 所詮、他のアプリはほとんど全て
> 「スクロールバーの位置が勝手に戻ってしまう」
> のですから。
>
> それを承知の上で、なお修正したいなら、マウスをキャプチャする必要が
> あるのかな?
> (C++時代の知識なので、.NETで同じ手法が使えるのかは未確認です、すいません)
>

ぶなっぷ 様
ご回答ありがとうございます。お世話になります。

おっしゃる通り、標準と思われる動作に手を加えるのは抵抗がありまして、
何かしらプロパティの設定など、プログラマへ提供されている手段で
位置リセットが無効にできれば、と考えておりました。

その手段がないようでしたらアドバイスいただきましたように
マウスキャプチャなどWindowsメッセージを捕捉して目的の動作に捻じ曲げるしかないようですね。
引用返信 編集キー/
■80057 / inTopicNo.4)  Re[1]: スクロールバーの位置が勝手に戻ってしまう
□投稿者/ shu (879回)-(2016/06/08(Wed) 11:44:35)
No80054 (工事 さん) に返信
> お世話になります。
>
> Panelにスクロールバーを表示させ、
> つまみをつかんだ状態でスクロールバーからある程度離れると、
> スクロール位置がつまみを最初につかんだ位置にリセットされてしまうのですが、
> これを回避(リセットせずにスクロール位置を保持)する方法を検討しています。
>
> リセットされてしまうこと自体を無効にできれば一番良いと考えているのですが、
> そのような方法はあったりするのでしょうか?
>
何故Windows標準の動作を離れそのような事をやりたいのでしょうか?
引用返信 編集キー/
■80059 / inTopicNo.5)  Re[2]: スクロールバーの位置が勝手に戻ってしまう
□投稿者/ 工事 (2回)-(2016/06/08(Wed) 11:59:49)
No80057 (shu さん) に返信
> ■No80054 (工事 さん) に返信
>>お世話になります。
>>
>>Panelにスクロールバーを表示させ、
>>つまみをつかんだ状態でスクロールバーからある程度離れると、
>>スクロール位置がつまみを最初につかんだ位置にリセットされてしまうのですが、
>>これを回避(リセットせずにスクロール位置を保持)する方法を検討しています。
>>
>>リセットされてしまうこと自体を無効にできれば一番良いと考えているのですが、
>>そのような方法はあったりするのでしょうか?
>>
> 何故Windows標準の動作を離れそのような事をやりたいのでしょうか?

shu 様

お世話になります。

特に深い理由はないのですが、
スクロールバーの位置がリセットされないアプリケーションも世の中にはあるので
(例として挙げるのが適切かどうかというのはありますが、例えばブラウザやVisual Studioで表示するスクロールバーはリセットされない)
同じ挙動にできないか、というのが背景です。

一般ユーザから見れば自作アプリもブラウザも、"パソコンで動くソフト"でひとくくりですので
位置がリセットされることに違和感を覚えるユーザがいらっしゃるなら、そこの挙動を統一してあげたいというのがあります。
引用返信 編集キー/
■80060 / inTopicNo.6)  Re[3]: スクロールバーの位置が勝手に戻ってしまう
□投稿者/ shu (881回)-(2016/06/08(Wed) 12:26:09)
No80059 (工事 さん) に返信
>
> 特に深い理由はないのですが、
> スクロールバーの位置がリセットされないアプリケーションも世の中にはあるので
> (例として挙げるのが適切かどうかというのはありますが、例えばブラウザやVisual Studioで表示するスクロールバーはリセットされない)
> 同じ挙動にできないか、というのが背景です。
>
Visual Sutdio (2010)のソースエディタ → 戻ります ※2012以降は環境がないのでわかりません。
Edge → 戻ります
IE11 → 戻ります
FireFox → 戻ります
Chrome → 戻ります
Excel2010 → 戻ります

など試してみましたが戻らないアプリがこちらでは無いような気がします。
ただ戻るまでのスクロールバーからの距離は若干異なるようです。
引用返信 編集キー/
■80061 / inTopicNo.7)  Re[3]: スクロールバーの位置が勝手に戻ってしまう
□投稿者/ furu (57回)-(2016/06/08(Wed) 12:39:52)
No80059 (工事 さん) に返信
>>何故Windows標準の動作を離れそのような事をやりたいのでしょうか?
> 一般ユーザから見れば自作アプリもブラウザも、"パソコンで動くソフト"でひとくくりですので
> 位置がリセットされることに違和感を覚えるユーザがいらっしゃるなら、そこの挙動を統一してあげたいというのがあります。

そうですよね、他のアプリでいいものは自作アプリでもやりたいですね。
ExcelのOfficeボタンなんか自作アプリにもつけたいです。

MicroSoftも、Windows標準の動作を離れそのような事をしてるんですから
やるのはいいんじゃないかな。

ただ、標準の動作でないので、ちょっとの機能でも、
ちゃんとするのはかなり大変ですね。
引用返信 編集キー/
■80063 / inTopicNo.8)  Re[4]: スクロールバーの位置が勝手に戻ってしまう
□投稿者/ ?H?? (2回)-(2016/06/08(Wed) 13:24:37)
No80060 (shu さん) に返信
> ■No80059 (工事 さん) に返信
>>
>>特に深い理由はないのですが、
>>スクロールバーの位置がリセットされないアプリケーションも世の中にはあるので
>>(例として挙げるのが適切かどうかというのはありますが、例えばブラウザやVisual Studioで表示するスクロールバーはリセットされない)
>>同じ挙動にできないか、というのが背景です。
>>
> Visual Sutdio (2010)のソースエディタ → 戻ります ※2012以降は環境がないのでわかりません。
> Edge → 戻ります
> IE11 → 戻ります
> FireFox → 戻ります
> Chrome → 戻ります
> Excel2010 → 戻ります
>
> など試してみましたが戻らないアプリがこちらでは無いような気がします。
> ただ戻るまでのスクロールバーからの距離は若干異なるようです。

shu 様
ご回答ありがとうございます。

申し訳ございません、おっしゃる通り、スクロールバーからの距離に差異はあるものの、
つまみをつかんだ位置にリセットされることをこちらの環境でも確認しました。
自作アプリでは30〜40px程度の距離で戻っていましたので、
その感覚でブラウザのスクロールバーを操作したところリセットされなかったため、認識を誤っておりました。
(なぜ距離が異なるのかは不明ですが)

本件、対応は見送ることで決着しようと思います。
ありがとうございました。


No80061 (furu さん) に返信
>そうですよね、他のアプリでいいものは自作アプリでもやりたいですね。
>ExcelのOfficeボタンなんか自作アプリにもつけたいです。
>
>MicroSoftも、Windows標準の動作を離れそのような事をしてるんですから
>やるのはいいんじゃないかな。
>
>ただ、標準の動作でないので、ちょっとの機能でも、
>ちゃんとするのはかなり大変ですね。

furu 様
標準から離れたことをしようとすると途端にコード量が増えてバグの温床になりかねませんよね。
(きちんと理解したうえで行えばよいのでしょうが。)
ともかく解決しました。ありがとうございます。
解決済み
引用返信 編集キー/
■80064 / inTopicNo.9)  Re[4]: スクロールバーの位置が勝手に戻ってしまう
□投稿者/ 魔界の仮面弁士 (747回)-(2016/06/08(Wed) 13:33:51)
No80060 (shu さん) に返信
> Visual Sutdio (2010)のソースエディタ → 戻ります ※2012以降は環境がないのでわかりません。
> Edge → 戻ります
> IE11 → 戻ります
> FireFox → 戻ります
> Chrome → 戻ります
> Excel2010 → 戻ります
> など試してみましたが戻らないアプリがこちらでは無いような気がします。

当方も概ね同じだったのですが、
  Win7 + Excel 2013
  Win10 + Excel 2016
において、「元の位置」ではなく「上端」に戻るという動作を引き起こしました。
それもきっかり先頭ではなく、1行目〜2行目の間で止まることもあるという謎仕様。
(Word の場合は、元の位置に戻るようです)


また Windows Embedded Compact 7 + Explorer の場合も多少挙動が異なり、
位置がリセットされるのではなく、操作が無視される仕様になっていました。
(一定距離以上離れた状態でドラッグした場合に、元のスクロール位置に戻るのではなく、
 直前までのスクロール位置を保ち続け、その後のドラッグが無視されている状態)
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -