我想实现一个简单的功能,用户可以自定义Font
标签。
所以我的FontEditor
形式包含以下代码:
public partial class FontEditor : Form
{
public Font myFont;
public FontEditor(Font myFont)
{
InitializeComponent();
this.myFont = myFont;
propertyGrid1.SelectedObject = this.myFont;
}
private void FontEditor_FormClosing(object sender, FormClosingEventArgs e)
{
DialogResult = DialogResult.OK;
}
}
我在这样的图表控件上使用它:
using (FontEditor fe = new FontEditor(chart1.Titles[0].Font))
{
if (DialogResult.OK == fe.ShowDialog())
{
chart1.Titles[0].Font = fe.myFont;
}
}
加载字体编辑器时,我可以看到以下内容:
如果我将Size
从18
更改为10
并关闭窗口,SelectedObject
(我的图表标题中的字体对象)似乎不是改变/更新:
不编辑属性网格值应该更新SelectedObject
?
答案 0 :(得分:0)
好的,我意识到这个愚蠢的错误。您在PropertyGrid
上执行的修改实际上位于propertyGrid1.SelectedObject
。
这就是我修复它的方法:
public partial class FontEditor : Form
{
public FontEditor(Font myFont)
{
InitializeComponent();
propertyGrid1.SelectedObject = myFont;
}
private void FontEditor_FormClosing(object sender, FormClosingEventArgs e)
{
DialogResult = DialogResult.OK;
}
public Font UpdatedFont
{
get { return propertyGrid1.SelectedObject as Font; }
}
}
using (FontEditor fe = new FontEditor(chart1.Titles[0].Font))
{
if (DialogResult.OK == fe.ShowDialog())
{
chart1.Titles[0].Font = fe.UpdatedFont;
}
}
这现在有效。