You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
150 lines
5.3 KiB
150 lines
5.3 KiB
using System; |
|
using System.Collections.Generic; |
|
using System.ComponentModel; |
|
using System.Drawing; |
|
using System.Data; |
|
using System.Linq; |
|
using System.Text; |
|
using System.Threading.Tasks; |
|
using System.Windows.Forms; |
|
using KGIS.Plugin.LayerProperty.Utils; |
|
|
|
namespace KGIS.Plugin.LayerProperty.View.UC_Controls |
|
{ |
|
public partial class UCScaleCombox : UserControl |
|
{ |
|
public delegate void ValueChangedHandler(double scale); |
|
private ItemInfo<double, string> pnone = new ItemInfo<double, string>(0.0, "<none>"); |
|
private IList<ItemInfo<double, string>> scales = new List<ItemInfo<double, string>>(); |
|
public event UCScaleCombox.ValueChangedHandler ScaleValueChanged; |
|
public double ScaleValue |
|
{ |
|
get |
|
{ |
|
try |
|
{ |
|
return (this.comboBoxEdit1.EditValue as ItemInfo<double, string>).InnerValue; |
|
} |
|
catch |
|
{ |
|
} |
|
return 0.0; |
|
} |
|
set |
|
{ |
|
this.comboBoxEdit1.Text = value.ToString(); |
|
this.comboBoxEdit1_Validated(null, null); |
|
} |
|
} |
|
public UCScaleCombox() |
|
{ |
|
InitializeComponent(); |
|
} |
|
public void Init() |
|
{ |
|
this.scales.Clear(); |
|
this.scales.Add(this.pnone); |
|
this.scales.Add(new ItemInfo<double, string>(1000.0, "1:1000")); |
|
this.scales.Add(new ItemInfo<double, string>(5000.0, "1:5000")); |
|
this.scales.Add(new ItemInfo<double, string>(10000.0, "1:10000")); |
|
this.scales.Add(new ItemInfo<double, string>(50000.0, "1:50000")); |
|
this.scales.Add(new ItemInfo<double, string>(100000.0, "1:100000")); |
|
this.scales.Add(new ItemInfo<double, string>(250000.0, "1:250000")); |
|
this.scales.Add(new ItemInfo<double, string>(500000.0, "1:500000")); |
|
this.scales.Add(new ItemInfo<double, string>(1000000.0, "1:1000000")); |
|
DevExpressControlInitList<double, string>.InitComboBoxEdit(ref this.comboBoxEdit1, this.scales, this.pnone); |
|
} |
|
private bool IsContains(ItemInfo<double, string> newItem) |
|
{ |
|
try |
|
{ |
|
foreach (ItemInfo<double, string> current in this.scales) |
|
{ |
|
if (current == newItem) |
|
{ |
|
return true; |
|
} |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
//RdbUtil.AddException(ex); |
|
} |
|
return false; |
|
} |
|
private void comboBoxEdit1_EditValueChanged(object sender, System.EventArgs e) |
|
{ |
|
try |
|
{ |
|
} |
|
catch (Exception ex) |
|
{ |
|
//RdbUtil.AddException(ex); |
|
} |
|
} |
|
private void comboBoxEdit1_Validated(object sender, System.EventArgs e) |
|
{ |
|
try |
|
{ |
|
string text = this.comboBoxEdit1.Text; |
|
if (text.Contains("1:")) |
|
{ |
|
double num; |
|
if (double.TryParse(text.Substring(2), out num)) |
|
{ |
|
if (num == 0.0) |
|
{ |
|
this.comboBoxEdit1.EditValue = this.pnone; |
|
} |
|
else |
|
{ |
|
ItemInfo<double, string> itemInfo = new ItemInfo<double, string>(num, text); |
|
if (!this.IsContains(itemInfo)) |
|
{ |
|
this.scales.Add(itemInfo); |
|
this.comboBoxEdit1.EditValue = itemInfo; |
|
} |
|
} |
|
} |
|
else |
|
{ |
|
this.comboBoxEdit1.EditValue = this.pnone; |
|
} |
|
} |
|
else |
|
{ |
|
double num2; |
|
if (double.TryParse(text.Trim(), out num2)) |
|
{ |
|
if (num2 == 0.0) |
|
{ |
|
this.comboBoxEdit1.EditValue = this.pnone; |
|
} |
|
else |
|
{ |
|
ItemInfo<double, string> itemInfo2 = new ItemInfo<double, string>(num2, "1:" + text); |
|
if (!this.IsContains(itemInfo2)) |
|
{ |
|
this.scales.Add(itemInfo2); |
|
} |
|
this.comboBoxEdit1.EditValue = itemInfo2; |
|
} |
|
} |
|
else |
|
{ |
|
this.comboBoxEdit1.EditValue = this.pnone; |
|
} |
|
} |
|
ItemInfo<double, string> itemInfo3 = this.comboBoxEdit1.EditValue as ItemInfo<double, string>; |
|
if (itemInfo3 != null && this.ScaleValueChanged != null) |
|
{ |
|
this.ScaleValueChanged(itemInfo3.InnerValue); |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
//RdbUtil.AddException(ex); |
|
} |
|
} |
|
} |
|
}
|
|
|