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

わんくま同盟

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

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

■102913 / 1階層)  DataGridViewのセル編集開始時に左端にスクロール
□投稿者/ 魔界の仮面弁士 (3747回)-(2024/01/31(Wed) 11:04:28)
No102908 (saku さん) に返信
> var dgv = (BaseDataGridView)sender;

BaseDataGridView というのが何者なのか分かりませんが、
System.Windows.Forms.DataGridView 継承の物でしょうか。


> 右端で完全に表示されていないセル(例:1セルが幅100であった場合、幅50分しか見えていない状態)をクリックして
> 編集しようとすると、スクロールが左端に勝手に移動してしまいます。
表示しきれていないセルを編集しようとすると、
該当セルよりも左側にある列のいずれかが FirstDisplayedScrollingColumnIndex になりますね。
左列の幅が広い場合は、自列が左端にスクロールすることもありますが、
いずれにせよ、列幅単位でのスクロールになってしまいますね。


> 「スクロールしないようにする」または、「編集するセルを全て見えるようにちょっぴり移動(完全に表示されていない場合のみ)」で探しているのですが

以前 Hongliang さんが紹介されていた方法では、ピクセル単位での水平スクロールに
HorizontalScrollingOffset プロパティを利用されていました。

ということで、スクロール後に元の位置に戻してしまうとか。
ちょっとちらつくかもしれませんが。

private int horizontalScrollingOffset = 0;
private void dgv_CurrentCellChanged(object sender, EventArgs e)
{
  horizontalScrollingOffset = ((DataGridView)sender).HorizontalScrollingOffset;
}
private void dgv_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
{
  ((DataGridView)sender).HorizontalScrollingOffset = horizontalScrollingOffset;
}
編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←DataGridViewのセル編集開始時に左端にスクロール /saku →Re[2]: DataGridViewのセル編集開始時に左端にスクロール /saku
 
上記関連ツリー

DataGridViewのセル編集開始時に左端にスクロール / saku (24/01/30(Tue) 18:25) #102908
Re[1]: DataGridViewのセル編集開始時に左端にスクロール / kiku (24/01/31(Wed) 08:51) #102909
Re[1]: DataGridViewのセル編集開始時に左端にスクロール / WebSurfer (24/01/31(Wed) 09:52) #102910
Re[1]: DataGridViewのセル編集開始時に左端にスクロール / とくま (24/01/31(Wed) 10:08) #102911
DataGridViewのセル編集開始時に左端にスクロール / 魔界の仮面弁士 (24/01/31(Wed) 11:04) #102913 ←Now
  └ Re[2]: DataGridViewのセル編集開始時に左端にスクロール / saku (24/01/31(Wed) 16:52) #102916 解決済み

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信