📄 memberinvokerforimage.cs
字号:
using System;
using System.Xml;
using System.Reflection;
using System.Diagnostics;
using System.ComponentModel;
using System.Collections;using System.IO;
using System.Drawing;
namespace gowk.GXF
{
/// <summary>
/// MemberInvokerForImage 的摘要说明。
/// </summary>
internal class MemberInvokerForImage:MemberInvoker
{
public MemberInvokerForImage()
{
}
public override bool SetValue(object obj, string men, object value,ParserState state)
{
return this.SetValue(obj,this.GetTypeMemberInfo(obj.GetType(),men),value,state);
}
public override bool SetValue(object obj,MemberInfo men,object value,ParserState state)
{
if(men==null)return true;
if((string)value=="mainForm")
{
System.Diagnostics.Trace.WriteLine(men.Name);
}
if(men is FieldInfo)
{
FieldInfo fi=(FieldInfo)men;
return this.SetValue(obj,fi,value,state);
}
else if(men is PropertyInfo)
{
PropertyInfo pi=(PropertyInfo)men;
return this.SetValue(obj,pi,value,state);
}
else
{
return base.SetValue(obj,men,value,state);
}
}
public override bool SetValue(object obj, FieldInfo men, object value,ParserState state)
{
TypeConverter tc = TypeDescriptor.GetConverter(men.FieldType);
if(tc.CanConvertFrom(value.GetType()))
{
object ov=tc.ConvertFrom(value);
men.SetValue(obj,ov);
return true;
}
else
{
tc=TypeDescriptor.GetConverter(value.GetType());
if(tc.CanConvertTo(men.FieldType))
{
men.SetValue(obj,tc.ConvertTo(value,men.FieldType));
return true;
}
else if((men.FieldType==typeof(Image))&&(value is string))
{
if(((string)value!=string.Empty)&& (value!=null))
{
if(System.IO.File.Exists((string)value))
{
Bitmap bm=new Bitmap((string)value);
bm.MakeTransparent(Color.FromArgb(255,0,255));
men.SetValue(obj,bm);
}
return true;
}
}
else if(value.GetType()==men.FieldType)
{
men.SetValue(obj,value);
return true;
}
else if(value.GetType().IsSubclassOf(men.FieldType))
{
men.SetValue(obj,value);
return true;
}
}
return false;
}
public override bool SetValue(object obj, PropertyInfo men, object value,ParserState state)
{
TypeConverter tc = TypeDescriptor.GetConverter(men.PropertyType);
if(tc.CanConvertFrom(value.GetType()))
{
object ov=tc.ConvertFrom(value);
men.SetValue(obj,ov,null);
return true;
}
else
{
tc=TypeDescriptor.GetConverter(value.GetType());
if(tc.CanConvertTo(men.PropertyType))
{
men.SetValue(obj,tc.ConvertTo(value,men.PropertyType),null);
return true;
}
else if((men.PropertyType==typeof(Image))&&(value is string))
{
if(((string)value!=string.Empty)&& (value!=null))
{
if(System.IO.File.Exists((string)value))
{
Bitmap bm=new Bitmap((string)value);
bm.MakeTransparent(Color.FromArgb(255,0,255));
men.SetValue(obj,bm,null);
}
return true;
}
}
else if(value.GetType().IsSubclassOf(men.PropertyType))
{
men.SetValue(obj,value,null);
return true;
}
}
return false;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -