1.需求及思路
绘制一个控件,可以设置经纬度,经纬度用double类型表示,支持绑定数据,数据更改通知。错误验证,输入检校。
大致设计界面如下图:
2.主要代码
主要代码在于计算,double类型转换成三个数:度数,分数,分数的小数。
var uc = d as LonLatSetUc;
if (uc != null && Math.Abs((decimal) e.NewValue - (decimal) e.OldValue) > 0.0000001m)
{
uc.DirectionSelectedIndex = uc.Value > 0 ? 0 : 1;
uc.Deg = Math.Abs((int) uc.Value);
var tempMin = (Math.Abs(uc.Value) - uc.Deg)*60;
uc.Min = (int) (tempMin + 0.0000001m);
//因decimal精度问题,需要四舍五入
uc.MinDecimal = (int) ((tempMin - uc.Min + 0.0000001m)*1000);
}
3.源码下载:
旧版本
https://files.cnblogs.com/files/lizhijian/%E7%BB%8F%E7%BA%AC%E5%BA%A6%E6%8E%A7%E4%BB%B6.rar
更新:
https://files.cnblogs.com/files/chlm/%E7%BB%8F%E7%BA%AC%E5%BA%A6%E6%8E%A7%E4%BB%B6.rar
感谢阅读