天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

WinForm控件開發總結(七)-----為復雜屬性的子屬性提供編輯功能

      前面的幾篇文章中,我們給控件添加一個復雜的類型Scope,并且給它的類型提供的一個類型轉換器,現在我們可以在屬性瀏覽器中編輯它的值,并且它的值也被串行化的源代碼里了。但是你有沒有發現,在屬性瀏覽器里編輯這個屬性的值還是不太方便。因為屬性只是“10200這種形式的,所以,你必須按照這種格式來修改,一旦格式錯誤就會引發異常,比如輸入一個“10200。我們期望這個屬性的每一子屬性都能夠被獨立的編輯就好了,這并非不能實現,而且實現還很簡單。
      為了在屬性瀏覽器里能夠獨立的編輯子屬性,我們還要重寫兩個方法:GetPropertiesSupported()和GetProperties();下面是ScopeConverter的完整代碼:
   public class ScopeConverter : TypeConverter
    
{
        
public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
        
{
            
if (sourceType == typeof(String)) return true;

            
return base.CanConvertFrom(context, sourceType);
        }


        
public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
        
{
            
if (destinationType == typeof(String)) return true;

            
if (destinationType == typeof(InstanceDescriptor)) return true;

            
return base.CanConvertTo(context, destinationType);
        }


        
public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.
CultureInfo culture, 
object value, Type destinationType)
        
{
            String result 
= "";
            
if (destinationType == typeof(String))
            
{
                Scope scope 
= (Scope)value;
                result 
= scope.Min.ToString()+"," + scope.Max.ToString();
                
return result;

            }


            
if (destinationType == typeof(InstanceDescriptor))
            
{
                ConstructorInfo ci 
= typeof(Scope).GetConstructor(new Type[] {typeof(Int32),
typeof
(Int32) }
);
                Scope scope 
= (Scope)value;
                
return new InstanceDescriptor(ci, new object[] { scope.Min,scope.Max });
            }

            
return base.ConvertTo(context, culture, value, destinationType);
        }


        
public override object ConvertFrom(ITypeDescriptorContext context, System.Globalization.
CultureInfo culture, 
object value)
        
{
            
if (value is string)
            
{
                String[] v 
= ((String)value).Split(',');
                
if (v.GetLength(0!= 2)
                
{
                    
throw new ArgumentException("Invalid parameter format");
                }


                Scope csf 
= new Scope();
                csf.Min 
= Convert.ToInt32(v[0]);
                csf.Max 
= Convert.ToInt32(v[1]);
                
return csf;
            }

            
return base.ConvertFrom(context, culture, value);
        }


        
public override bool GetPropertiesSupported(ITypeDescriptorContext context)
        
{
            
return true;
        }


        
public override PropertyDescriptorCollection GetProperties(ITypeDescriptorContext context,
object
 value, Attribute[] attributes)
        
{
            
return TypeDescriptor.GetProperties(typeof(Scope), attributes);
        }

}

NET技術WinForm控件開發總結(七)-----為復雜屬性的子屬性提供編輯功能,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 中国比基尼美女 | 孕妇高潮抽搐喷水30分钟 | 国精产品一区二区三区有限公司 | 成人免费观看在线视频 | 国产成人综合在线观看 | 日本一卡精品视频免费 | 国产在线不卡 | 国产午夜婷婷精品无码A片 国产午夜视频在永久在线观看 | 国产成人高清精品免费5388密 | 日日干夜夜啪蕉视频 | 各种肉黄浪荡故事集 | 老熟女重囗味HDXX | 国产成人亚洲综合无 | 黄色网址在线免费观看 | 偷窥国产亚洲免费视频 | 中文字幕亚洲综合小综合在线 | 亚色九九九全国免费视频 | 亚洲视频精选 | 免费无码又爽又黄又刺激网站 | 亚洲精品午夜久久久伊人 | 国产传媒18精品免费观看 | 国产AV天堂亚洲AV麻豆 | 精选国产AV精选一区二区三区 | 大肥婆丰满大肥奶bbw肥 | 正在播放国产尾随丝袜美女 | 亚洲 欧美 国产 综合不卡 | 亚洲日本国产综合高清 | 高清欧美一区二区三区 | 国产精品一区二区三区四区五区 | 爱情岛aqdlttv | 西施打开双腿下面好紧 | 51成人精品午夜福利AV免费七 | 免费观看成人www精品视频在线 | 国产一区在线观看免费 | 野花韩国中文版免费观看 | 被同桌摸出水来了好爽的视频 | 超碰免费视频部落格 | 无限资源在线观看播放 | 女人一级毛片免费视频观看 | 性夜影院爽黄A爽免费动漫 性夜夜春夜夜爽AA片A | 国产精品久久人妻互换毛片 |