私はチャートコントロールから継承してスクロールラインチャート(古いチャートレコーダーに似ています)を実装しようとしています。 Chartコントロールが 継承されたチャートコントロール:デフォルト値とビヘイビアーを変更する方法
- シリーズのChartAreaのX軸は間隔を必要とする代わりに、列
- の、ラインをデフォルトとすべきである使用されるさまざまなオブジェクトの
- 変更デフォルトプロパティ:これを行うには、私は2つのことを行う必要がありますラベルフォーマットは が
- のChartAreaのY軸は間隔、IsStartedFromZeroを必要とする変更、およびラベルフォーマットは
- 一定時間が経過した後、それは私がすることができますが、すべてのデータポイントが
を追加した後、それは軸をリフレッシュする必要があり、すべての新しいデータポイント
、私は成功せず、単に継承されたチャートコントロールのTextプロパティを変更しようとしました:
Public Class ScrollChart
Inherits Chart
Public Sub New()
Me.Text = "Test"
End Sub
End Class
、Textプロパティをオーバーライドすることによって:
Public Class ScrollChart
Inherits Chart
Private _myText As String = "Test"
Public Overrides Property Text() As String
Get
Return _myText
End Get
Set(value As String)
_myText = value
End Set
End Property
End Class
私はSeriesチャートタイプを2つの異なる方法で変更しようとしました:
Public Class ScrollChart
Inherits Chart
Friend WithEvents Chart1 As Chart
Private Sub InitializeComponent()
Dim ChartArea1 As System.Windows.Forms.DataVisualization.Charting.ChartArea = New System.Windows.Forms.DataVisualization.Charting.ChartArea()
Dim Legend1 As System.Windows.Forms.DataVisualization.Charting.Legend = New System.Windows.Forms.DataVisualization.Charting.Legend()
Dim Series1 As ScrollSeries = New ScrollSeries
Me.Chart1 = New System.Windows.Forms.DataVisualization.Charting.Chart()
CType(Me.Chart1, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout()
'
'Chart1
'
ChartArea1.Name = "ChartArea1"
Me.Chart1.ChartAreas.Add(ChartArea1)
Legend1.Name = "Legend1"
Me.Chart1.Legends.Add(Legend1)
Me.Chart1.Location = New System.Drawing.Point(0, 0)
Me.Chart1.Name = "Chart1"
Series1.ChartArea = "ChartArea1"
Series1.Legend = "Legend1"
Series1.Name = "Series1"
Series1.ChartType = SeriesChartType.Line
Me.Chart1.Series.Add(Series1)
Me.Chart1.Size = New System.Drawing.Size(300, 300)
Me.Chart1.TabIndex = 0
Me.Chart1.Text = "Test"
CType(Me.Chart1, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me, System.ComponentModel.ISupportInitialize).EndInit()
Me.ResumeLayout(False)
End Sub
End Class
Public Class ScrollSeries
Inherits Series
Public Sub New()
MyBase.New()
Me.ChartType = SeriesChartType.Line
End Sub
End Class
いずれの場合も、デザイナを使用して追加したコントロールのプロパティは変更されませんでした。私もDataPointCollectionを継承しようとしましたが、New()が公開されていないため継承できません。
私は、継承したChartがプロパティとメソッドを変更するために使用するSeriesクラスとDataPointCollectionクラスを置き換える必要があると思われますが、これまでのところ私はその方法を犠牲にしています。
ctorの実行後にプロパティの割り当てが行われるため、最初のスニペットのようにハードコード "test"を上書きしようとすると上書きされます。 2番目のものと同じです。私は3日に何をしているのか分かりません。 [ask]を読んで[ツアー]を受けてください – Plutonix
3番目のスニペットでは、継承したChartクラスに継承されたSeriesコレクションを代わりに使用しようとしていました。これはデフォルトのChartTypeをオーバーライドしようとする試みでした。あなたが言及したように、それは他の2人と同じように上書きされたので、それはうまくいきませんでした。 –
最初の2つはおそらく動作しています - デフォルト - 最初の開始値は、コードまたはデザイナーで割り当てられた値で置き換えられるはずです。最後のブロックはブロックが呼び出されていることを示していないので、失敗します。 [質問]を読んで[ツアー]を受けてください – Plutonix