none
属性控件问题 RRS feed

  • 问题

  • 我目前在使用属性控件,现在遇到这样一个问题.当用户输入属性值后,我可以对改值作检验.现在要求是如果输入的值没有通过检验,那么就弹出一个消息框显示提示信息,然后将焦点设置在原来的属性上,要求用户修改值.这个行为效果和VS的集成环境中的属性控件的行为是一样的.现在的问题是,当用户输入完,然后点击窗体上的其他控件时,我可以检验并显示提示信息,但是无法将焦点设回原来的属性,以便用户继续编辑.请问这个问题如何解决???

    非常感谢


    CanadaProgrammer
    2011年8月8日 1:16

答案

  • 你需要在编辑环境下进行编写代码,大致下面的样子

     

    public class FlashEditor : UITypeEditor
    {
     public override UITypeEditorEditStyle GetEditStyle(System.ComponentModel.ITypeDescriptorContext context)
     {
      return UITypeEditorEditStyle.Modal;
     }
    
     public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
     {
      MessageBox.Show(value.ToString());
      context.OnComponentChanging();
      IWindowsFormsEditorService editorService = null;
      if (provider != null)
      {
       editorService =
         provider.GetService(
         typeof(IWindowsFormsEditorService))
         as IWindowsFormsEditorService;
      }
    
      if (editorService != null)
      {
      .....
       }
    
       context.OnComponentChanged();
      }
      return value;
     } 
    



    【孟子E章】
    • 已标记为答案 Paul Zhou 2011年8月15日 6:15
    2011年8月8日 1:58
    版主

全部回复

  • 你需要在编辑环境下进行编写代码,大致下面的样子

     

    public class FlashEditor : UITypeEditor
    {
     public override UITypeEditorEditStyle GetEditStyle(System.ComponentModel.ITypeDescriptorContext context)
     {
      return UITypeEditorEditStyle.Modal;
     }
    
     public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
     {
      MessageBox.Show(value.ToString());
      context.OnComponentChanging();
      IWindowsFormsEditorService editorService = null;
      if (provider != null)
      {
       editorService =
         provider.GetService(
         typeof(IWindowsFormsEditorService))
         as IWindowsFormsEditorService;
      }
    
      if (editorService != null)
      {
      .....
       }
    
       context.OnComponentChanged();
      }
      return value;
     } 
    



    【孟子E章】
    • 已标记为答案 Paul Zhou 2011年8月15日 6:15
    2011年8月8日 1:58
    版主
  • 更详细的内容你需要查看msdn http://msdn.microsoft.com/zh-cn/library/2z11414w.aspx
    【孟子E章】
    2011年8月8日 1:59
    版主