C# ReoGridの、スクロールを同期したい、セルがない位置にスクロール出来ないようにしたい
投稿者 (削除されました)  ()
投稿日時
2022/10/27 13:51:35
(削除されました)
投稿者 魔界の仮面弁士  (社会人)
投稿日時
2022/10/27 14:02:47
お使いのバージョンは、nuget で公開されている v3.0.0 (2021/05/05) のアセンブリですか?
それとも、それ以降の修正を含めたソースからビルドした物でしょうか。
https://www.nuget.org/packages/unvell.ReoGrid.dll
https://github.com/unvell/ReoGrid/tree/v3.0.0
https://github.com/unvell/ReoGrid.git
v3.0 から、スクロール量の丸め処理のロジックが変わっていて、
v2.2 とは動作が違っているところがあるんですよね。
もしも今回の件が #410 (2021/05/11) で報告されているものに該当するのなら、
2021/05/29 に datadiode さんが修正パッチを作っていらしたので、
もしかしたらそれが使えるかもしれません。 ※当方は未検証
https://github.com/unvell/ReoGrid/issues/410
https://github.com/datadiode/ReoGrid/releases/tag/3.0.0-datadiode-62-g70c0167
今の所プルリクはされていないようで、現時点では本家のブランチにも
マージはされていないようですが、試してみるのも良いかもしれません。
スクロール周りに限らず、幾つかの障害については既に報告されていたり、
対策が提案されているものもあるので、GitHub の Issues を覗いてみる事をお奨めします。
たとえば #177 (2018/10/06)に報告されているスクロール障害については
現在も継続中のようですが、jingwood さん自身が、4ヶ月前(2022/06/28)に
master ブランチに暫定対応の修正を加えられたようです。
https://github.com/unvell/ReoGrid/issues/177
それとも、それ以降の修正を含めたソースからビルドした物でしょうか。
https://www.nuget.org/packages/unvell.ReoGrid.dll
https://github.com/unvell/ReoGrid/tree/v3.0.0
https://github.com/unvell/ReoGrid.git
v3.0 から、スクロール量の丸め処理のロジックが変わっていて、
v2.2 とは動作が違っているところがあるんですよね。
もしも今回の件が #410 (2021/05/11) で報告されているものに該当するのなら、
2021/05/29 に datadiode さんが修正パッチを作っていらしたので、
もしかしたらそれが使えるかもしれません。 ※当方は未検証
https://github.com/unvell/ReoGrid/issues/410
https://github.com/datadiode/ReoGrid/releases/tag/3.0.0-datadiode-62-g70c0167
今の所プルリクはされていないようで、現時点では本家のブランチにも
マージはされていないようですが、試してみるのも良いかもしれません。
スクロール周りに限らず、幾つかの障害については既に報告されていたり、
対策が提案されているものもあるので、GitHub の Issues を覗いてみる事をお奨めします。
たとえば #177 (2018/10/06)に報告されているスクロール障害については
現在も継続中のようですが、jingwood さん自身が、4ヶ月前(2022/06/28)に
master ブランチに暫定対応の修正を加えられたようです。
https://github.com/unvell/ReoGrid/issues/177
投稿者 えんぴー  (社会人)
投稿日時
2022/10/27 14:18:59
魔界の仮面弁士様
確認ありがとうございます。
nugetで公開されているV3.0.0を利用しています。
表示されているスクロールバーをクリックしてドラッグ移動する分には
余計なスペースは表示されません。
しかし、マウスのホイールを使って下にスクロールすると
真っ白な画面が表示されます。
(少しとかではなく、全部真っ白みたいな感じです)
行数を10行にプログラムで変更していて、
スクロールもギリギリしなくてOKレベルだからでしょうかね……。
GitHub、見てみます!ありがとうございます!
アカウントを持っていないので、
投稿する場合はアカウント作成からですね。
確認ありがとうございます。
nugetで公開されているV3.0.0を利用しています。
表示されているスクロールバーをクリックしてドラッグ移動する分には
余計なスペースは表示されません。
しかし、マウスのホイールを使って下にスクロールすると
真っ白な画面が表示されます。
(少しとかではなく、全部真っ白みたいな感じです)
行数を10行にプログラムで変更していて、
スクロールもギリギリしなくてOKレベルだからでしょうかね……。
GitHub、見てみます!ありがとうございます!
アカウントを持っていないので、
投稿する場合はアカウント作成からですね。
投稿者 魔界の仮面弁士  (社会人)
投稿日時
2022/10/27 15:24:54
> スクロール同期は何となくわかるかもしれないのですが、
検証はしていませんが、なんとなく WorksheetScrolled イベントと
ScrollCurrentWorksheet メソッドが使えそうですね。
互いをスクロールしあって再帰呼び出しにならないように注意しましょう。
https://github.com/unvell/ReoGrid/issues/114
https://reogrid.net/download/ にあるデモプログラム(v2.x) のものでは
[Features] - [Synchronize Scroll] (\Features\SynchronizeScrollDemo.cs ) が
該当しそうですが、v3.0 版のイベント引数には x.OffsetX は無かったはずなので、
GitHub にある最新のデモを確認した方が良いとは思います。
https://github.com/unvell/ReoGrid/blob/master/DemoJP/Workbook/SynchronizeScrollDemo.cs
> ReoGrid1とReoGrid2の縦スクロールを同期させたいです。
2 つのコントロールで同期させる方法の場合、
一方だけが Zoom されていた場合や、
それぞれでシートの総行数が異なっていた場合、
あるいはアウトラインの折り畳みや、
行数は同じでも高さの違う行の混在などの扱いが悩ましいですね。
シチュエーションとしてはかなり限定されますが、
もしも水平スクロールが不要で、かつ、両者の行の高さなども同一な場合には、
単一シートにして、FreezeArea で分けるという選択肢もあるかもしれません。
https://reogrid.net/jp/document/worksheet/freeze/
検証はしていませんが、なんとなく WorksheetScrolled イベントと
ScrollCurrentWorksheet メソッドが使えそうですね。
互いをスクロールしあって再帰呼び出しにならないように注意しましょう。
https://github.com/unvell/ReoGrid/issues/114
https://reogrid.net/download/ にあるデモプログラム(v2.x) のものでは
[Features] - [Synchronize Scroll] (\Features\SynchronizeScrollDemo.cs ) が
該当しそうですが、v3.0 版のイベント引数には x.OffsetX は無かったはずなので、
GitHub にある最新のデモを確認した方が良いとは思います。
https://github.com/unvell/ReoGrid/blob/master/DemoJP/Workbook/SynchronizeScrollDemo.cs
> ReoGrid1とReoGrid2の縦スクロールを同期させたいです。
2 つのコントロールで同期させる方法の場合、
一方だけが Zoom されていた場合や、
それぞれでシートの総行数が異なっていた場合、
あるいはアウトラインの折り畳みや、
行数は同じでも高さの違う行の混在などの扱いが悩ましいですね。
シチュエーションとしてはかなり限定されますが、
もしも水平スクロールが不要で、かつ、両者の行の高さなども同一な場合には、
単一シートにして、FreezeArea で分けるという選択肢もあるかもしれません。
https://reogrid.net/jp/document/worksheet/freeze/
投稿者 えんぴー  (社会人)
投稿日時
2022/10/28 09:49:43
魔界の仮面弁士様
たびたび回答いただきありがとうございます!
教えていただいたデモ版で、スクロール同期は問題なく利用できました。
ただ、ホイールでスクロールした場合に
空白場所に移動してしまうのはどうにもならなそうです。
現在のスクロール位置取得も中々難しそうなため
とりあえずホイールスクロールを禁止にしようと思います。
行の高さは同じにしますが、Grid1とGrid2でそれぞれ枠固定したい場合があるため
とりあえず縦スクロールが出来たので良しとします!
ありがとうございました、また何かありましたら相談させてください。
本当にいろいろと助かりました、ありがとうございました!
たびたび回答いただきありがとうございます!
教えていただいたデモ版で、スクロール同期は問題なく利用できました。
ただ、ホイールでスクロールした場合に
空白場所に移動してしまうのはどうにもならなそうです。
現在のスクロール位置取得も中々難しそうなため
とりあえずホイールスクロールを禁止にしようと思います。
行の高さは同じにしますが、Grid1とGrid2でそれぞれ枠固定したい場合があるため
とりあえず縦スクロールが出来たので良しとします!
ありがとうございました、また何かありましたら相談させてください。
本当にいろいろと助かりました、ありがとうございました!
WinformのC#で作成中です。
https://reogrid.net/jp/document/worksheet/
ReoGridを利用し、スケジュール帳みたいなものを作ろうとしています。
ReoGrid1、ReoGrid2を横並びに配置して設置しています。
var sheet = reoGridControl1.CurrentWorksheet;
var CalSheet = reoGridControl2.CurrentWorksheet;
sheet.Resize(10, 10);
CalSheet.Resize(10, 182);
上記のようにシートには10行まで表示させるようにしているのですが、
シート上でホイールをくるくる回したら、セルが無いところまでスクロール出来てしまいます。
今はとりあえず10行としていますが、動的に100行とかに増やしていく可能性があります。
画面上にセルが無いところにはスクロールさせたくないのですが、
どのように設定したらできるのでしょうか?
(ShowScrollEndSpacingというのが怪しいと思っているのですが、
TrueにしてもFalseにしても変化は見当たりませんでした)
また、ReoGrid1とReoGrid2の縦スクロールを同期させたいです。
スクロール同期は何となくわかるかもしれないのですが、
セルが無い位置にホイールスクロールが出来ないようにする手順は分からないため
わかれば教えてください。よろしくお願いいたします。