c# - 如何在不使用滚动条 Winforms 的情况下使用 Mouse_Wheel 事件在面板中向上或向下滚动
问题描述
例子:
我有一个Panel
左右flowLayoutpanel
我想在不使用滚动条的情况下滚动查看项目,而不是我想使用 MouseWheel
所以我想知道有什么方法可以在面板或 flowLayoutPanel 中向上或向下滚动
如果不使用'Auto Scroll= true'
,我想在鼠标滚动时向上或向下移动 ViewPanel。
如果你明白我的意思
这些是我使用的一些代码,但似乎根本不起作用
--Sameple1
void Panel2_mWheel(object sender, MouseEventArgs e)
{
//Get cursor position
Point mousePoint = new Point(e.X, e.Y);
//Change to the location of the form of this form
mousePoint.Offset(this.Location.X, this.Location.Y);
if (panel2.RectangleToScreen(panel2.DisplayRectangle).Contains(mousePoint))
{
Console.WriteLine("Contain");
panel2.AutoScrollPosition = new Point(0, panel2.VerticalScroll.Value - e.Delta);
}
}
--样本2
Panel.MouseEnter += C_MouseEnter;
void Panel_MouseEnter(object sender, EventArgs e)
{
c.Focus();
}
--sample3
panel.MouseWheel += pn_MouseWheel;
private void pn_MouseWheel(object sender, MouseEventArgs e)
{
int deltaScroll = 10;
if (e.Delta > 0)
{
if (pnlContain.VerticalScroll.Value - deltaScroll >= pnlContain.VerticalScroll.Minimum)
pnlContain.VerticalScroll.Value -= deltaScroll;
else
pnlContain.VerticalScroll.Value = pnlContain.VerticalScroll.Minimum;
}
else
{
if (pnlContain.VerticalScroll.Value + deltaScroll <= pnlContain.VerticalScroll.Maximum)
pnlContain.VerticalScroll.Value += deltaScroll;
else
pnlContain.VerticalScroll.Value = pnlContain.VerticalScroll.Maximum;
}
--样本4
panel_wheel(object sender, MouseEventArgs e)
{
if(e.OldValue>e.NewValue)
{
//Scroll up Do stuff
}
else
{
//Scroll down Do stuff
}
}
请任何人帮助我!
解决方案
推荐阅读
- scala - 使用 SparkScala 在 foreachPartition 中将 List[Row] 写入 CSV
- java - quarkus 休眠模式中的内存不足错误
- python - 我希望导航抽屉作为示例运行;但是,MDNavigationDrawer 可能会执行两次
- r - 用 R 中的 if 语句填充 for 循环中的表
- microsoft-graph-api - 如何使用 Microsoft Graph API 阅读附加电子邮件的附件
- c++ - 如何使用 std::vector 中的备用容量?
- javascript - 为什么 Threebox.js 中的 WORLD_SIZE 为 1024000
- ios - 如何正确执行 SwiftUI StateObjects 的依赖注入?
- r - 拟合的 coxph 模型随时间变化的地层和集群的公式中的项排序而变化
- typescript - 如何在 TypeScript 中为单个文件启用严格模式?