C#進度軸控件分享
更新時間:2015年06月04日 15:58:24 投稿:hebedich
這里給大家介紹的是使用C#實現(xiàn)的進度軸的方法和示例,非常的實用,有需要的小伙伴可以參考下。
當執(zhí)行長時間后臺處理時,你是否希望軟件給你一個反饋,讓你了解程序執(zhí)行進度。進度軸幫你忙,輕松掌握全局動態(tài)。你的進度你做主!進度軸分為橫版和縱版總有一版適合你!
應用了事件機制假如有更好的方法歡迎交流,假如對您有用請頂一下。
載入時間軸控件
/// <summary>
/// 載入時間軸控件
/// 2015-04-16
/// 吳海龍
/// </summary>
public void LoadTimeAxis()
{
SortedDictionary<string, string> sdict = new SortedDictionary<string, string>();
sdict.Add("1", "讀取配置");
sdict.Add("2", "選擇模板");
sdict.Add("3", "確認數(shù)據(jù)");
sdict.Add("4", "生成代碼");
uta = new uctlTimeAxis(sdict,1);
uta.lc = new ToolFunction.uctlTimeAxis.TimeAxisClick(SayHello);
CommonFunction.AddForm3(splitContainer4.Panel2, uta);
}
panel容器中添加控件
/// <summary>
/// 項panel容器中添加控件
/// </summary>
/// <param name="p">容器panel</param>
/// <param name="uc">顯示的usercontrol</param>
public static void AddForm3(Panel p, UserControl uc)
{
p.Controls.Clear();
p.Controls.Add(uc);
uc.Dock = DockStyle.Fill;
}
初始化縱版界面
/// <summary>
/// 初始化垂直進度軸
/// 2015-04-15
/// 吳海龍
/// </summary>
public void InitVerticalTimeAxis()
{
try
{
int TempCenterOfThePieY = CenterOfTheCircleY;
using (Graphics g = this.CreateGraphics())
{
g.SmoothingMode = SmoothingMode.HighQuality; //使繪圖質(zhì)量最高,即消除鋸齒
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.CompositingQuality = CompositingQuality.HighQuality;
g.DrawString("正在執(zhí)行:", f1, Brushes.Black, new PointF(CenterOfTheCircleX, 5));
g.DrawLine(p3, new Point(LineStartX, TempCenterOfThePieY), new Point(LineStartX, (sdict.Keys.Count - 1) * CircleSpace + TempCenterOfThePieY));
foreach (var item in sdict.Keys)
{
g.FillEllipse(Brushes.Gray, CenterOfTheCircleX - CircleRadius, TempCenterOfThePieY - CircleRadius, CircleRadius * 2, CircleRadius * 2);
g.FillEllipse(Brushes.White, CenterOfTheCircleX - PieRadius2, TempCenterOfThePieY - PieRadius2, PieRadius2 * 2, PieRadius2 * 2);
g.DrawString(sdict[item], f1, Brushes.DarkGray, new PointF(ItemStartX, TempCenterOfThePieY - ItemFixY));
Label l = new Label();
l.Name = item;
l.Location = new Point(ItemStartX,TempCenterOfThePieY - ItemFixY);
l.Text = sdict[item];
l.Click +=new EventHandler(l_Click);
//l.Click += new EventHandler(l_Click2);
this.Controls.Add(l);
TempCenterOfThePieY = TempCenterOfThePieY + CircleSpace;
}
}
}
catch (Exception exp)
{
CommonFunction.WriteLog(exp, "繪制失敗");
}
}
縱版進度軸步進方法
/// <summary>
/// 垂直步進方法
/// /// 2015-04-16
/// 吳海龍
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
public void SetVerticalStep(object sender, KeyValueEventArgs e)
{
int TempCenterOfThePieY = CenterOfTheCircleY;
if ("" == KeyValueEventArgs.Key)
{
return;
}
using (Graphics g = this.CreateGraphics())
{
g.SmoothingMode = SmoothingMode.HighQuality; //使繪圖質(zhì)量最高,即消除鋸齒
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.CompositingQuality = CompositingQuality.HighQuality;
foreach (var item in sdict.Keys)
{
g.DrawString(sdict[item], f1, Brushes.Green, ItemStartX, TempCenterOfThePieY - ItemFixY);
g.DrawEllipse(Pens.Green, CenterOfTheCircleX - CircleRadius, TempCenterOfThePieY - CircleRadius, CircleRadius * 2, CircleRadius * 2);
g.DrawLine(p2, new Point(LineStartX, LineStartY), new Point(LineStartX, TempCenterOfThePieY));
g.FillEllipse(Brushes.Green, CenterOfTheCircleX - PieRadius, TempCenterOfThePieY - PieRadius, PieRadius * 2, PieRadius * 2);
if (item == KeyValueEventArgs.Key)
{
break;
}
TempCenterOfThePieY = TempCenterOfThePieY + CircleSpace;
}
}
}
畫圖屬性字段
/// <summary>
/// 藍色寬2
/// </summary>
static Pen p1 = new Pen(Color.Blue, 2);
/// <summary>
/// 綠色寬3
/// </summary>
static Pen p2 = new Pen(Color.Green, 3);
/// <summary>
/// 灰色寬1
/// </summary>
static Pen p3 = new Pen(Color.Gray, 1);
/// <summary>
/// 微軟雅黑
/// </summary>
static Font f1 = new Font("微軟雅黑", 9, FontStyle.Regular);
/// <summary>
/// 圓心X坐標
/// </summary>
public static int CenterOfTheCircleX = 31;
/// <summary>
/// 圓心Y坐標
/// </summary>
public static int CenterOfTheCircleY = 46;
/// <summary>
/// 說明條目X坐標
/// </summary>
public static int ItemStartX = 45;
/// <summary>
/// 條目X修正量
/// </summary>
public static int ItemFixX = -20;
/// <summary>
/// 條目Y修正量
/// </summary>
public static int ItemFixY = 10;
public static Point CenterOfThePie = new Point(CenterOfTheCircleX, CenterOfTheCircleY);
/// <summary>
/// 命中Pie半徑
/// </summary>
public static int PieRadius = 6;
/// <summary>
/// 白點Pie半徑
/// </summary>
public static int PieRadius2 = 8;
/// <summary>
/// 圓半徑
/// </summary>
public static int CircleRadius = 9;
/// <summary>
/// 圓心距
/// </summary>
public static int CircleSpace = 80;
/// <summary>
/// 軸X起點
/// </summary>
public static int LineStartX = CenterOfTheCircleX;
/// <summary>
/// 軸Y起點
/// </summary>
public static int LineStartY = CenterOfTheCircleY;
/// <summary>
/// 內(nèi)部Key定義
/// </summary>
public static string Key = "";
/// <summary>
/// 繪圖事件
/// </summary>
public event EventHandler<KeyValueEventArgs> KeyValueChangeEventHandler;
public delegate void LabelClickEventHandler(object sender, LabelClickEventArgs e);
//public event LabelClickEventHandler<LabelClickEventArgs> ;
public delegate void TimeAxisClick();
public TimeAxisClick lc = null;
public delegate void TimeAxisClick2(string labelName);
public TimeAxisClick2 lc2 = null;
/// <summary>
/// 流程字典
/// </summary>
public static SortedDictionary<string, string> sdict = new SortedDictionary<string, string>();
/// <summary>
/// 水平標示
/// </summary>
private static readonly int HorizontalTimeAxis = 0;
/// <summary>
/// 垂直標志
/// </summary>
private static readonly int VerticalTimeAxis = 1;
/// <summary>
/// 繪制標志,0為水平;1為垂直。
/// </summary>
public static int TimeAxisModle = 0;
構(gòu)造方法
#region 構(gòu)造方法
public uctlTimeAxis()
{
InitializeComponent();
}
public uctlTimeAxis(SortedDictionary<string, string> s)
{
InitializeComponent();
if (sdict != null)
{
sdict = s;
}
}
public uctlTimeAxis(SortedDictionary<string, string> s, int model)
{
InitializeComponent();
if (sdict != null)
{
sdict = s;
TimeAxisModle = model;
if (HorizontalTimeAxis==TimeAxisModle)
{
KeyValueChangeEventHandler += new EventHandler<KeyValueEventArgs>(SetHorizontalStep);
}
else if (VerticalTimeAxis==TimeAxisModle)
{
KeyValueChangeEventHandler += new EventHandler<KeyValueEventArgs>(SetVerticalStep);
}
}
}
#endregion
Key值轉(zhuǎn)變
/// <summary>
/// Key值轉(zhuǎn)變
/// </summary>
public class KeyValueEventArgs : EventArgs
{
public static string Key = "";
public KeyValueEventArgs(string s)
{
Key = s;
}
}
以上所述就是本文的全部內(nèi)容了,希望大家能夠喜歡。
您可能感興趣的文章:
- C#中常使用進度條的代碼
- asp.net(c#)開發(fā)中的文件上傳組件uploadify的使用方法(帶進度條)
- Android文件下載進度條的實現(xiàn)代碼
- 6款新穎的jQuery和CSS3進度條插件推薦
- C#控制臺輸出進度和百分比的實例代碼
- c#進度條 progressBar 使用方法的小例子
- C# cmd中修改顯示(顯示進度變化效果)的方法
- c#根據(jù)文件大小顯示文件復制進度條實例
- android自定義進度條漸變色View的實例代碼
- Jquery Uploadify上傳帶進度條的簡單實例
- C# Winform下載文件并顯示進度條的實現(xiàn)代碼
- Android中實現(xiàn)Webview頂部帶進度條的方法
- 基于jQuery實現(xiàn)網(wǎng)頁進度顯示插件
- php上傳文件并顯示上傳進度的方法
- python下載文件時顯示下載進度的方法
相關文章
其實/FileShare就是控制文件流的“訪問權(quán)限”,當然,這僅僅是入門的文件操作,自己做了筆記,也希望能給大家?guī)韼椭?/div> 2014-01-01
C#中把FastReport.Net報表控件的數(shù)據(jù)保存到數(shù)據(jù)庫
這篇文章介紹了在數(shù)據(jù)庫中保存FastReport.Net報表的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-06-06
C#自定義序列化ISerializable的實現(xiàn)方法
這篇文章主要介紹了C#自定義序列化ISerializable的實現(xiàn)方法,涉及C#序列化的操作技巧,非常具有實用價值,需要的朋友可以參考下2015-04-04
WinForm實現(xiàn)程序一段時間不運行自動關閉的方法
這篇文章主要介紹了WinForm實現(xiàn)程序一段時間不運行自動關閉的方法,涉及WinForm計時器及進程操作的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-09-09最新評論

