diff --git a/src/HandyControl_Core30.sln b/src/HandyControl_Core_30.sln
similarity index 100%
rename from src/HandyControl_Core30.sln
rename to src/HandyControl_Core_30.sln
diff --git a/src/HandyControl_Net_40.sln b/src/HandyControl_Net_40.sln
index adb9a4cc..60bcd427 100644
--- a/src/HandyControl_Net_40.sln
+++ b/src/HandyControl_Net_40.sln
@@ -1,7 +1,7 @@
Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 15
-VisualStudioVersion = 15.0.27703.2035
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.28729.10
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Net_40", "Net_40", "{763DABFC-950A-4965-97CB-15C59A928401}"
EndProject
diff --git a/src/HandyControl_Net_GE45.sln b/src/HandyControl_Net_GE45.sln
index 4093e7bd..b321309b 100644
--- a/src/HandyControl_Net_GE45.sln
+++ b/src/HandyControl_Net_GE45.sln
@@ -1,7 +1,7 @@
Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 15
-VisualStudioVersion = 15.0.27703.2035
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.28729.10
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HandyControl_Net_GE45", "Net_GE45\HandyControl_Net_GE45\HandyControl_Net_GE45.csproj", "{DC966E3D-BCFF-4652-98CF-070E5494749A}"
EndProject
@@ -26,9 +26,11 @@ Global
Debug-Net45|Any CPU = Debug-Net45|Any CPU
Debug-Net462|Any CPU = Debug-Net462|Any CPU
Debug-Net47|Any CPU = Debug-Net47|Any CPU
+ Debug-Net48|Any CPU = Debug-Net48|Any CPU
Release-Net45|Any CPU = Release-Net45|Any CPU
Release-Net462|Any CPU = Release-Net462|Any CPU
Release-Net47|Any CPU = Release-Net47|Any CPU
+ Release-Net48|Any CPU = Release-Net48|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{DC966E3D-BCFF-4652-98CF-070E5494749A}.Debug-Net45|Any CPU.ActiveCfg = Debug-Net45|Any CPU
@@ -37,24 +39,32 @@ Global
{DC966E3D-BCFF-4652-98CF-070E5494749A}.Debug-Net462|Any CPU.Build.0 = Debug-Net462|Any CPU
{DC966E3D-BCFF-4652-98CF-070E5494749A}.Debug-Net47|Any CPU.ActiveCfg = Debug-Net47|Any CPU
{DC966E3D-BCFF-4652-98CF-070E5494749A}.Debug-Net47|Any CPU.Build.0 = Debug-Net47|Any CPU
+ {DC966E3D-BCFF-4652-98CF-070E5494749A}.Debug-Net48|Any CPU.ActiveCfg = Debug-Net48|Any CPU
+ {DC966E3D-BCFF-4652-98CF-070E5494749A}.Debug-Net48|Any CPU.Build.0 = Debug-Net48|Any CPU
{DC966E3D-BCFF-4652-98CF-070E5494749A}.Release-Net45|Any CPU.ActiveCfg = Release-Net45|Any CPU
{DC966E3D-BCFF-4652-98CF-070E5494749A}.Release-Net45|Any CPU.Build.0 = Release-Net45|Any CPU
{DC966E3D-BCFF-4652-98CF-070E5494749A}.Release-Net462|Any CPU.ActiveCfg = Release-Net462|Any CPU
{DC966E3D-BCFF-4652-98CF-070E5494749A}.Release-Net462|Any CPU.Build.0 = Release-Net462|Any CPU
{DC966E3D-BCFF-4652-98CF-070E5494749A}.Release-Net47|Any CPU.ActiveCfg = Release-Net47|Any CPU
{DC966E3D-BCFF-4652-98CF-070E5494749A}.Release-Net47|Any CPU.Build.0 = Release-Net47|Any CPU
- {9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Debug-Net45|Any CPU.ActiveCfg = Debug-Net47|Any CPU
- {9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Debug-Net45|Any CPU.Build.0 = Debug-Net47|Any CPU
- {9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Debug-Net462|Any CPU.ActiveCfg = Debug-Net47|Any CPU
- {9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Debug-Net462|Any CPU.Build.0 = Debug-Net47|Any CPU
- {9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Debug-Net47|Any CPU.ActiveCfg = Debug-Net47|Any CPU
- {9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Debug-Net47|Any CPU.Build.0 = Debug-Net47|Any CPU
- {9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Release-Net45|Any CPU.ActiveCfg = Release-Net47|Any CPU
- {9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Release-Net45|Any CPU.Build.0 = Release-Net47|Any CPU
- {9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Release-Net462|Any CPU.ActiveCfg = Release-Net47|Any CPU
- {9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Release-Net462|Any CPU.Build.0 = Release-Net47|Any CPU
- {9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Release-Net47|Any CPU.ActiveCfg = Release-Net47|Any CPU
- {9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Release-Net47|Any CPU.Build.0 = Release-Net47|Any CPU
+ {DC966E3D-BCFF-4652-98CF-070E5494749A}.Release-Net48|Any CPU.ActiveCfg = Release-Net48|Any CPU
+ {DC966E3D-BCFF-4652-98CF-070E5494749A}.Release-Net48|Any CPU.Build.0 = Release-Net48|Any CPU
+ {9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Debug-Net45|Any CPU.ActiveCfg = Debug-Net48|Any CPU
+ {9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Debug-Net45|Any CPU.Build.0 = Debug-Net48|Any CPU
+ {9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Debug-Net462|Any CPU.ActiveCfg = Debug-Net48|Any CPU
+ {9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Debug-Net462|Any CPU.Build.0 = Debug-Net48|Any CPU
+ {9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Debug-Net47|Any CPU.ActiveCfg = Debug-Net48|Any CPU
+ {9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Debug-Net47|Any CPU.Build.0 = Debug-Net48|Any CPU
+ {9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Debug-Net48|Any CPU.ActiveCfg = Debug-Net48|Any CPU
+ {9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Debug-Net48|Any CPU.Build.0 = Debug-Net48|Any CPU
+ {9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Release-Net45|Any CPU.ActiveCfg = Release-Net48|Any CPU
+ {9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Release-Net45|Any CPU.Build.0 = Release-Net48|Any CPU
+ {9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Release-Net462|Any CPU.ActiveCfg = Release-Net48|Any CPU
+ {9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Release-Net462|Any CPU.Build.0 = Release-Net48|Any CPU
+ {9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Release-Net47|Any CPU.ActiveCfg = Release-Net48|Any CPU
+ {9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Release-Net47|Any CPU.Build.0 = Release-Net48|Any CPU
+ {9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Release-Net48|Any CPU.ActiveCfg = Release-Net48|Any CPU
+ {9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Release-Net48|Any CPU.Build.0 = Release-Net48|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/src/HandyControl_Net_GE45.sln.DotSettings b/src/HandyControl_Net_GE45.sln.DotSettings
deleted file mode 100644
index df567fc2..00000000
--- a/src/HandyControl_Net_GE45.sln.DotSettings
+++ /dev/null
@@ -1,2 +0,0 @@
-
- True
\ No newline at end of file
diff --git a/src/Net_GE45/HandyControlDemo_Net_GE45/HandyControlDemo_Net_GE45.csproj b/src/Net_GE45/HandyControlDemo_Net_GE45/HandyControlDemo_Net_GE45.csproj
index 37f8abfd..b390a478 100644
--- a/src/Net_GE45/HandyControlDemo_Net_GE45/HandyControlDemo_Net_GE45.csproj
+++ b/src/Net_GE45/HandyControlDemo_Net_GE45/HandyControlDemo_Net_GE45.csproj
@@ -38,6 +38,17 @@
4
v4.7
+
+ AnyCPU
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+ v4.8
+
AnyCPU
pdbonly
@@ -58,6 +69,16 @@
4
v4.7
+
+ AnyCPU
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+ v4.8
+
..\..\Shared\HandyControlDemo_Shared\Resources\Img\icon.ico
diff --git a/src/Net_GE45/HandyControl_Net_GE45/HandyControl_Net_GE45.csproj b/src/Net_GE45/HandyControl_Net_GE45/HandyControl_Net_GE45.csproj
index fa66936d..c1f090f3 100644
--- a/src/Net_GE45/HandyControl_Net_GE45/HandyControl_Net_GE45.csproj
+++ b/src/Net_GE45/HandyControl_Net_GE45/HandyControl_Net_GE45.csproj
@@ -14,6 +14,17 @@
+
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE;netle45
+ prompt
+ 4
+ v4.5
+ netgt40
+
true
full
@@ -36,14 +47,25 @@
v4.7
netgt40
-
+
true
full
false
bin\Debug\
- DEBUG;TRACE;netle45
+ DEBUG;TRACE
prompt
4
+ v4.8
+ netgt40
+
+
+ pdbonly
+ true
+ bin\Release\
+ TRACE;netle45
+ prompt
+ 4
+ bin\Release\HandyControl.xml
v4.5
netgt40
@@ -69,15 +91,15 @@
v4.7
netgt40
-
+
pdbonly
true
bin\Release\
- TRACE;netle45
+ TRACE
prompt
4
bin\Release\HandyControl.xml
- v4.5
+ v4.8
netgt40
diff --git a/src/Shared/HandyControl_Shared/HandyControl_Shared.projitems b/src/Shared/HandyControl_Shared/HandyControl_Shared.projitems
index fd5312df..6da52fc3 100644
--- a/src/Shared/HandyControl_Shared/HandyControl_Shared.projitems
+++ b/src/Shared/HandyControl_Shared/HandyControl_Shared.projitems
@@ -19,6 +19,7 @@
+
diff --git a/src/Shared/HandyControl_Shared/Tools/Extension/StringExtension.cs b/src/Shared/HandyControl_Shared/Tools/Extension/StringExtension.cs
new file mode 100644
index 00000000..854f767e
--- /dev/null
+++ b/src/Shared/HandyControl_Shared/Tools/Extension/StringExtension.cs
@@ -0,0 +1,32 @@
+using System;
+using System.ComponentModel;
+
+namespace HandyControl.Tools.Extension
+{
+ public static class StringExtension
+ {
+ public static T Value(this string input)
+ {
+ try
+ {
+ return (T)TypeDescriptor.GetConverter(typeof(T)).ConvertFromString(input);
+ }
+ catch
+ {
+ return default(T);
+ }
+ }
+
+ public static object Value(this string input, Type type)
+ {
+ try
+ {
+ return TypeDescriptor.GetConverter(type).ConvertFromString(input);
+ }
+ catch
+ {
+ return null;
+ }
+ }
+ }
+}
\ No newline at end of file