:PropertyGrid中不會引發PropertyValueChanged事件
private void propertyGrid1_PropertyValueChanged(object s, PropertyValueChangedEventArgs e)
{
propertyGrid1.Refresh();
PropertyChanged(true);
}
,然後保存按鈕被啓用。
我使用我的編輯器和窗體(參見下面的類)來編輯ProperrtyGrid中的一個值。這是我班的對象。 關閉編輯器和編輯器中的對象後,我重新指定對象的值爲新值(value = frm.m_DS;)。所有的工作都很好,但只有一個時刻:在這種情況下,不會引發PropertyValueChanged。 我使用PropertyValueChanged事件來啓用我的按鈕「保存」,它將所有屬性保存到文件。 我如何捕捉值發生變化的事件並啓用保存按鈕?
public class DataProviderEditor : UITypeEditor
{
public override Object EditValue(
ITypeDescriptorContext context,
IServiceProvider provider,
Object value)
{
if ((context != null) && (provider != null))
{
IWindowsFormsEditorService svc =
(IWindowsFormsEditorService)
provider.GetService(typeof(IWindowsFormsEditorService));
if (svc != null)
{
using (DatasourceForm frm =
new DatasourceForm((MyDatasource)value))
{
if (svc.ShowDialog(frm) == DialogResult.OK)
{
value = frm.m_DS;
}
}
}
}
return base.EditValue(context, provider, value);
}
_但是當我使用我的編輯器的對象then_ - 你在這裏是什麼意思?你能改說嗎? – Dzienny 2013-02-27 11:30:41
它只能可靠地引發它自己編輯的值的事件,而不是將它傳遞給其他編輯器的值。它沒有管道來比較類型* object *的值。這不容易解決。 – 2013-02-27 11:37:25
我編輯了文本。 – Oleg 2013-02-27 11:41:38