我正在创建一个图形程序,我希望用户能够更改他们创建的图形的外观。为他们提供更改系列颜色、数据点大小等的机会。我允许他们通过使用 propertyGrid 来做到这一点。然而,通过使用堆栈溢出的优秀人员的帮助,我能够将图表的所有属性导入我的属性网格;现在我不知道如何将我的图表连接到 propertyGrid,所以当我更改网格中的某些内容时,图表会发生变化。
到目前为止我有
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
magRadioBox.Checked = true;
PropertyGrid propertyGrid1 = new PropertyGrid();
propertyGrid1.CommandsVisibleIfAvailable = true;
propertyGrid1.Text = "Graph and Plotting Options";
propertyGrid1.PropertyValueChanged += propertyGrid1_PropertyValueChanged;
this.Controls.Add(propertyGrid1);
}
private void Form1_Load(object sender, EventArgs e)
{
this.Text = "MY Plot Program";
propertyGrid1.SelectedObject = chart1;
}
private void button1_Click(object sender, EventArgs e)
{
//some code that is populating my chart(chart1) with data
//....chart1 being filled with data
}
private void propertyGrid1_PropertyValueChanged(object s , PropertyValueChangedEventArgs e)
{
//Getting the MyChart instance from propertyGrid
MyChart myChart = (MyChart)(((PropertyGrid)s.SelectedObject);
//Calling the method that will refresh my chart1
myChart.Invalidate();
}
上面的代码是我的表格。我的“MyChart”类代码是
namespace FFT_Plotter
{
[DefaultPropertyAttribute("Text")]
public class MyChart : Chart
{
public event EventHandler PropertyChanged;
private void OnPropertyChanged(object sender, EventArgs e)
{
EventHandler eh = propertyChanged;
if(eh !=null)
{
eh(sender, e);
}
[BrowsableAttribute(false)]
public new System.Drawing.Color BackColor
{
get { return BackColor; }//Here back color is just an example of a property, not necessarily one that I would make non-Browsable
set
{
base.BackColor = value;
OnPropertyChanged(this,EventArgs.Empty);
}
}
}
}
上面的类让我有一个属性网格,它具有图表的所有属性,并允许我在我认为合适的时候隐藏这些属性。但是现在我一直在理解如何将我的 chart1 连接到我创建的网格。如果有人对如何做到这一点有任何建议,那将非常有帮助。