Я хочу установить объект в элемент сетки свойств с помощью кнопки, которая вызовет форму.Не работает, как ожидалось - PullRequest
0 голосов
/ 26 января 2011

Итак, у меня есть сетка свойств, к которой я хочу привязать объект. Когда приложение запущено, появится кнопка и отобразится форма, которая позволит этому объекту установить свои свойства и вернуть его обратно в свойство, вызвавшее форму.

Вот что у меня есть:

Я не могу отобразить свойство в своей сетке. По сути, я хочу использовать форму для заполнения других элементов в сетке свойств.

Надеюсь, мой вопрос был достаточно ясен ...

   public class OptoSetupFormEditor : UITypeEditor
{
    public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context)
    {
        return UITypeEditorEditStyle.Modal;
    }


    public override object EditValue(ITypeDescriptorContext context, System.IServiceProvider provider, object value)
    {
        IWindowsFormsEditorService svc = provider.GetService(typeof(IWindowsFormsEditorService)) as IWindowsFormsEditorService;
        DataTemp opto = value as DataTemp;
        if (svc != null && opto != null)
        {
            using (OptoSigmaSetup form = new OptoSigmaSetup())
            {

                if (svc.ShowDialog(form) == DialogResult.OK)
                {
                    opto.Direction = form.Direction;
                    opto.FunctionToCall = form.FunctionToCall;
                    opto.Duration = form.Duration;
                 //   OptoSigmaTest.Command = form.
                }
            }
        }
        return opto; // can also replace the wrapper object here
    }
}

  [Editor(typeof(OptoSetupFormEditor),typeof(UITypeEditor))]
    [TypeConverter(typeof(ExpandableObjectConverter))]
    public DataTemp Test1
    {
       set
       { 
           this.Duration  = value.Duration ;
           this.Direction = value.Direction; 
           this.FunctionUsed = value.FunctionToCall;
       }
    }


    [ReadOnly(true), Category("Setup")]
    public string FunctionUsed
    {
        get { return functionUsed; }
        set { functionUsed = value; }
    }


    [ReadOnly(true), Category("Setup")]
    public int Duration
    {
        get { return duration; }
        set { duration = value; }
    }

    [ReadOnly(true),Category("Setup")]
    public string Direction
    {
        get { return direction; }
        set { direction = value; }
    }

  public class DataTemp
{
    private int duration = 0;
    private string direction = "Positive";
    private string functionToCall = "Home";

    public string FunctionToCall
    {
        get { return functionToCall; }
        set { functionToCall = value; }
    }

    public int Duration
    {
        get { return duration; }
        set { duration = value; }
    }
    public string Direction
    {
        get { return direction; }
        set { direction = value; }
    }
}

Спасибо заранее. Если вам нужно больше разъяснений, пожалуйста, дайте мне знать

1 Ответ

0 голосов
/ 26 января 2011

Вы пытались расширить свойства, которые вы хотите отобразить, с атрибутом Browsable?

[Browsable(true)]
[ReadOnly(true), Category("Setup")]
public string FunctionUsed
{
    get { return functionUsed; }
    set { functionUsed = value; }
}

MSDN: BrowsableAttribute

EDIT:

Хм, согласно MSDN, свойства без этого атрибута или свойства, атрибут которых указан со значением true, должны отображаться в Property окнах; так что это предложение осталось без ответа.

...