我創建了System.Windows.Forms.DataVisualization.Charting.Chart的子類。在構造函數中我已經設置了一個默認的圖表面積和系列:繼承.NET圖表控件
System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea1 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
System.Windows.Forms.DataVisualization.Charting.Series series1 = new System.Windows.Forms.DataVisualization.Charting.Series();
chartArea1.AxisX.Title = "Time (s)";
chartArea1.AxisY.Title = "Value(%)";
chartArea1.Name = "MainChartArea";
series1.ChartArea = "MainChartArea";
series1.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.FastLine;
series1.Name = "Series1";
Series.Add(series1);
我已經加入的功能的集合到子類使用ChartAreas [0]。這很好。
現在在VS2010中,我創建一個新的控件,轉到工具箱並添加我的自定義圖表控件。似乎發生什麼是VS將我的默認圖表區域和系列複製到父控件的InitializeComponent函數。
當我執行代碼時,父控件的InitializeComponent函數內有一個異常,表示圖表的子類已經有一個名爲「MainChartArea」的圖表區域,並且已經有一個名爲「Series1」的系列。
如果我現在編輯父控件的InitializeComponent代碼來更改它構建的名稱並且運行得很好。
不過,如果我現在回去和默認的圖表區域,系列設置進行任何更改VS再拷貝父控件,導致了同樣的問題。
我知道我可以簡單地從父控件的InitializeComponent函數中刪除代碼,但是在圖表控件的設計器中沒有獲得可視化表示,而且手動編輯它似乎是不好的做法。
什麼是子類圖表控件,這樣我可以設置在子類中的區域和一系列正確的方法是什麼?
與花哨的設計師(如Chart)一起進行控制時,如果從它們派生出來,往往會出現錯誤。他們的設計師無法分辨您在構造函數中添加的系列與您在設計師中添加的任何系列之間的區別。所以它會盡職盡責地序列化你在構造函數中創建的那個。當你在設計師中創建系列時,你不太可能想要這樣做。更糟的是,你的構造函數*也*在運行時運行,現在你有*兩個*系列你不想要的。解決這個問題需要修改設計師。完全不切實際,它是無證的,非常複雜。停止幫助吧。 –
謝謝。我很害怕。 – Andy