[英]How can I change the appearance of a Winforms TreeView SelectedNode using C#?
[英]Using MouseEvents to change chart series appearance in C# Winforms
我的表單中有一個動態創建的點狀圖,因此每次運行表格時,圖表上系列的編號/名稱都可以更改。 我希望能夠使用圖例突出顯示一個系列,以便更好地查看僅屬於該系列的點。 我已經能夠使用較粗的標記邊框來突出顯示該系列,但是我卻無法將其突出顯示,因此,再次單擊該標記或將其移出圖例項,就可以將其突出顯示。 這是我突出顯示所選系列中的點的方法:
private void plot.MouseMove (object sender, MouseEventArgs e)
{
HitTestResult result = plot.HitTest(e.X, e.Y);
if (result != null && result.Object != null)
{
if (result.ChartElementType == ChartElementType.LegendItem)
{
string selseries = result.Series.Name;
plot.Series[selseries].MarkerBorderWidth = 3;
plot.Series[selseries].MarkerSize = 11;
plot.Series[selseries].MarkerBorderColor = Color.Black;
}
}
};
突出顯示后如何取消選擇它? 是否有更好的方法來選擇性地突出顯示一個系列而不是其他系列? 理想情況下,我希望將除選定的一個系列以外的所有系列更改為較暗的顏色,從而突出顯示所討論的系列,但是我將選擇能夠/取消選擇所討論的系列。
為了“記住”突出顯示的系列,您需要在該方法之外存儲一個引用,以便以后可以訪問它。 然后,每當您要清除更改時,只需查找先前保存的內容並重置屬性即可。 這是一些示例代碼:
string selectedSeries = ""; // store a class-scoped reference
private void plot.MouseMove(object sender, MouseEventArgs e)
{
HitTestResult result = plot.HitTest(e.X, e.Y);
if (result != null && result.Object != null && result.ChartElementType == ChartElementType.LegendItem)
{
string selseries = result.Series.Name;
// store a reference to what we are changing:
selectedSeries = selseries;
plot.Series[selseries].MarkerBorderWidth = 3;
plot.Series[selseries].MarkerSize = 11;
plot.Series[selseries].MarkerBorderColor = Color.Black;
}
else
{
// if we clear the selection here, then we are clearing the selection
// whenever we move off the legend item... that was one of your use cases
// you could also do something similar in a mouse click event to cover your other use case.
if (selectedSeries != "")
{
plot.Series[selectedSeries].MarkerBorderWidth = 1; // set these to default value
plot.Series[selectedseries].MarkerSize = 5;
plot.Series[selectedseries].MarkerBorderColor = Color.Green;
selectedSeries = ""; // reset selection
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.