【问题标题】:How do I label the minimum, maximum, center ticks in a .net 3.5 trackbar?如何在 .net 3.5 轨迹栏中标记最小、最大、中心刻度?
【发布时间】:2011-05-24 14:20:55
【问题描述】:

我需要在应用程序中设置电压。我习惯在 Labview 中使用滑块,并希望使用 C# 程序来复制它。

我发现轨迹栏只做整数值,所以我需要让轨迹栏从 -50 到 +50 并带有刻度线,而不是使用双精度值从 -5 到 5每 10 步得到 0.1v 分辨率。

如何标记轨迹栏的最小值和最大值?

|-----|-----|-----|-----|-----|-----|-----|---- -|-----|-----|
-5.0                    0.0                     5.0

我将 C# 与 .net 3.5 与 Visual Studio 一起使用。

【问题讨论】:

    标签: c# .net-3.5 trackbar


    【解决方案1】:

    最简单的方法是添加 2-3 个标签,使用轨迹栏的高度/宽度/顶部/左侧和标签的组合,您应该能够相对地定位它们而没有太多麻烦?

    编辑:另外,this post 似乎显示了一个与您描述的要求相同的自定义实现?

    【讨论】:

      【解决方案2】:

      TrackBar Scale Image Link

      我所做的是修改图表并将其 X 轴刻度用作 TrackBar 的刻度(参见图片链接 [我会嵌入图片,但无法让它工作])。图像的上半部分是滑块,下半部分是常规图表对象,其属性已更改,因此唯一可见的是它的 X 轴。

      这是用于 TrackBar 和 Chart 的 VS2010 表单设计器代码。此示例将为您提供 0 到 100 的比例,可以轻松调整其大小以与您的轨迹栏对齐。您甚至可以将两个控件放在一个面板中,以便它们可以轻松地调整为一个(代码是 VB 而不是 C#):

              Dim ChartArea2 As System.Windows.Forms.DataVisualization.Charting.ChartArea = New System.Windows.Forms.DataVisualization.Charting.ChartArea()
          Dim Legend2 As System.Windows.Forms.DataVisualization.Charting.Legend = New System.Windows.Forms.DataVisualization.Charting.Legend()
          Dim Series2 As System.Windows.Forms.DataVisualization.Charting.Series = New System.Windows.Forms.DataVisualization.Charting.Series()
          Dim DataPoint2 As System.Windows.Forms.DataVisualization.Charting.DataPoint = New System.Windows.Forms.DataVisualization.Charting.DataPoint(0.0R, 0.0R)
          Me.chart_slider = New System.Windows.Forms.DataVisualization.Charting.Chart()
          Me.TrackBar1 = New System.Windows.Forms.TrackBar()
          CType(Me.chart_slider, System.ComponentModel.ISupportInitialize).BeginInit()
          CType(Me.TrackBar1, System.ComponentModel.ISupportInitialize).BeginInit()
          Me.SuspendLayout()
          '
          'chart_slider
          '
          Me.chart_slider.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
              Or System.Windows.Forms.AnchorStyles.Left) _
              Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
          Me.chart_slider.BackColor = System.Drawing.Color.Transparent
          ChartArea2.AxisX.LabelAutoFitMaxFontSize = 8
          ChartArea2.AxisX.LabelAutoFitMinFontSize = 8
          ChartArea2.AxisX.LineColor = System.Drawing.Color.Transparent
          ChartArea2.AxisX.MajorGrid.Enabled = False
          ChartArea2.AxisX.Maximum = 100.0R
          ChartArea2.AxisX.Minimum = 0.0R
          ChartArea2.AxisY.Interval = 1.0R
          ChartArea2.AxisY.LineWidth = 0
          ChartArea2.AxisY.MajorGrid.Enabled = False
          ChartArea2.AxisY.MajorTickMark.Enabled = False
          ChartArea2.AxisY.Maximum = 0.0R
          ChartArea2.AxisY.Minimum = 0.0R
          ChartArea2.AxisY.TitleForeColor = System.Drawing.Color.Transparent
          ChartArea2.BackColor = System.Drawing.Color.Transparent
          ChartArea2.InnerPlotPosition.Auto = False
          ChartArea2.InnerPlotPosition.Height = 5.0!
          ChartArea2.InnerPlotPosition.Width = 100.0!
          ChartArea2.Name = "ChartArea1"
          Me.chart_slider.ChartAreas.Add(ChartArea2)
          Legend2.Enabled = False
          Legend2.Name = "Legend1"
          Me.chart_slider.Legends.Add(Legend2)
          Me.chart_slider.Location = New System.Drawing.Point(186, 426)
          Me.chart_slider.Name = "chart_slider"
          Series2.ChartArea = "ChartArea1"
          Series2.Legend = "Legend1"
          Series2.Name = "Series1"
          Series2.Points.Add(DataPoint2)
          Me.chart_slider.Series.Add(Series2)
          Me.chart_slider.Size = New System.Drawing.Size(441, 31)
          Me.chart_slider.TabIndex = 160
          Me.chart_slider.Text = "Chart1"
          '
          'TrackBar1
          '
          Me.TrackBar1.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
              Or System.Windows.Forms.AnchorStyles.Left) _
              Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
          Me.TrackBar1.Location = New System.Drawing.Point(191, 398)
          Me.TrackBar1.Margin = New System.Windows.Forms.Padding(3, 3, 3, 0)
          Me.TrackBar1.Name = "TrackBar1"
          Me.TrackBar1.RightToLeftLayout = True
          Me.TrackBar1.Size = New System.Drawing.Size(423, 45)
          Me.TrackBar1.TabIndex = 1
          '
          'Form1
          '
          Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
          Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
          Me.ClientSize = New System.Drawing.Size(690, 498)
          Me.Controls.Add(Me.TrackBar1)
          Me.Controls.Add(Me.chart_slider)
          Me.Name = "Form1"
          Me.Text = "Form1"
          CType(Me.chart_slider, System.ComponentModel.ISupportInitialize).EndInit()
          CType(Me.TrackBar1, System.ComponentModel.ISupportInitialize).EndInit()
          Me.ResumeLayout(False)
          Me.PerformLayout()
      

      【讨论】:

      • 有点像黑客,但非常漂亮。提供了很好的结果。正是我需要的!太感谢了!也许它可以以更通用的方式编码,因此如果 TrackBar 的某些属性发生更改, ChartArea 会自动更改。 :-)
      猜你喜欢
      • 1970-01-01
      • 2014-09-29
      • 1970-01-01
      • 1970-01-01
      • 2015-11-25
      • 2019-03-19
      • 1970-01-01
      • 1970-01-01
      • 2021-10-08
      相关资源
      最近更新 更多