【问题标题】:Specific values/intervals on a TrackbarTrackbar 上的特定值/间隔
【发布时间】:2014-03-27 09:28:42
【问题描述】:

我在这里要做的是放下一个类似于 Windows XP 上的轨迹栏来更改分辨率:(http://puu.sh/7Li5h.png)

我想设置特定的间隔/增量值,如上图所示。目前,实际栏下方的线条在那里,但我仍然可以在任何我喜欢的地方移动指针。这是我当前的代码:

trackBarIP.Minimum = 0;
trackBarIP.TickFrequency = 1000;
trackBarIP.SmallChange = 50;
trackBarIP.LargeChange = 100;
trackBarIP.Maximum = 6300;

我有这段代码可以在它旁边的文本框中显示 Trackbar 的当前值:

(http://puu.sh/7Ligk.png)

private void trackBarIP_ValueChanged(object sender, EventArgs e)
{
    textBoxIP.Text = trackBarIP.Value.ToString();
}

【问题讨论】:

  • 每次改变track bar值的值,获取值,看看是否等于你想要的增量之一,如果不改变值到最接近的增量?前任。如果您以 10 为单位递增并将值更改为 12,请将值设置为 10。
  • 这就是我最终要做的,是的。我猜这不是它应该工作的方式,但这确实有效。

标签: c# intervals trackbar


【解决方案1】:

我知道这是一篇很老的帖子,但下面是我的解决方案:

它使用 Visual Studio 2013 中的 C# 轨迹栏和“滚动”事件。

        zoomTrackBar.Minimum = 25;
        zoomTrackBar.Maximum = 400;
        zoomTrackBar.Value = 100;
        zoomTrackBar.TickFrequency = 25;
    }
    #endregion

    private void zoomTrackBar_Scroll(object sender, EventArgs e)
    {
        int value = (sender as TrackBar).Value;
        double indexDbl = (value * 1.0) / zoomTrackBar.TickFrequency;
        int index = Convert.ToInt32(Math.Round(indexDbl));

        zoomTrackBar.Value = zoomTrackBar.TickFrequency * index;

        label2.Text = zoomTrackBar.Value.ToString();
    }

它所做的只是将当前选择的值除以频率,哈希标记(在我的例子中是 25)。然后我将这个数字四舍五入,这就是我的“哈希索引”。从这里我可以通过将此“索引”乘以我的频率轻松计算正确的哈希值。最后一步是将 trackbar 设置为等于新值。

【讨论】:

    猜你喜欢
    • 2016-05-03
    • 1970-01-01
    • 1970-01-01
    • 2019-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-08
    相关资源
    最近更新 更多