ユーザーが PropertyGrid でテキストまたはブール値を変更するとflagModified=true;
、イベント ハンドラーで設定します。
private void propertyGrid1_PropertyValueChanged(object s, PropertyValueChangedEventArgs e)
{
propertyGrid1.Refresh();
PropertyChanged(true);
}
[保存] ボタンが有効になります。
エディターとフォーム (以下のクラスを参照) を使用して、Propertygrid の値の 1 つを編集します。それは私のクラスのオブジェクトです。オブジェクトがエディターで変更され、エディターが閉じられた後、オブジェクトの値を新しい値 (値 = 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);
}