using
System;
using
System.ComponentModel;
namespace
TypeEditorsCS
{
///
<summary>
/// Summary
description for TransparencyConverter.
///
</summary>
public class
TransparencyConverter : TypeConverter
{
public
TransparencyConverter()
{
}
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;
return
base.CanConvertTo (context, destinationType);
}
public
override object
ConvertFrom(ITypeDescriptorContext context, System.Globalization.CultureInfo
culture, object value)
{
if(value
is string)
{
string
s=(string)value;
int
n=s.IndexOf("%");
if(n>-1)
s=s.Substring(0,n);
try
{
int
i=int.Parse(s);
i=i>100
? 100 : i<0 ? 0 : i;
return
255-(i*255/100);
}
catch(Exception)
{
return
0;
}
}
return
base.ConvertFrom (context, culture,
value);
}
public
override object
ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo
culture, object value,
Type destinationType)
{
if(destinationType==typeof(string))
{
return
string.Format("{0}%",((255-(int)value)*100/255).ToString(""));
}
return
base.ConvertTo (context, culture,
value, destinationType);
}
}
}
Imports
System
Imports
System.ComponentModel
Public
Class TransparencyConverter
Inherits TypeConverter
Public Sub
New()
End Sub
Public Overloads
Overrides Function
CanConvertFrom(ByVal context
As ITypeDescriptorContext,
ByVal sourceType As
Type) As Boolean
If
sourceType Is GetType(String)
Then
Return
True
End
If
Return
MyBase.CanConvertFrom(context, sourceType)
End Function
Public Overloads
Overrides Function
CanConvertTo(ByVal context
As ITypeDescriptorContext,
ByVal destinationType
As Type) As
Boolean
If
destinationType Is
GetType(String)
Then
Return
True
End
If
Return
MyBase.CanConvertTo(context, destinationType)
End Function
Public Overloads
Overrides Function
ConvertFrom(ByVal context
As ITypeDescriptorContext,
ByVal culture As
System.Globalization.CultureInfo, ByVal value
As Object)
As Object
If
TypeOf value Is
String Then
Dim
s As String =
CType(value, String)
Dim
n As Integer =
s.IndexOf("%")
If
n > -1 Then
s =
s.Substring(0, n)
End
If
Dim
e As Exception
Try
Dim
i As Integer =
Integer.Parse(s)
i =
IIf(i > 100, 100, IIf(i < 0, 0, i))
Return
255 - (i * 255 / 100)
Catch
e
Return
0
End
Try
End
If
Return
MyBase.ConvertFrom(context, culture, value)
End Function
Public Overloads
Overrides Function
ConvertTo(ByVal context
As ITypeDescriptorContext, ByVal culture
As System.Globalization.CultureInfo,
ByVal value As
Object, ByVal
destinationType As Type)
As Object
If
destinationType Is
GetType(String)
Then
Return
String.Format("{0}%", ((255 -
CInt(value)) * 100 / 255).ToString("0.00"))
End
If
Return
MyBase.ConvertTo(context, culture, value,
destinationType)
End Function
End
Class