C#進(jìn)度軸控件分享
當(dāng)執(zhí)行長(zhǎng)時(shí)間后臺(tái)處理時(shí),你是否希望軟件給你一個(gè)反饋,讓你了解程序執(zhí)行進(jìn)度。進(jìn)度軸幫你忙,輕松掌握全局動(dòng)態(tài)。你的進(jìn)度你做主!進(jìn)度軸分為橫版和縱版總有一版適合你!
應(yīng)用了事件機(jī)制假如有更好的方法歡迎交流,假如對(duì)您有用請(qǐng)頂一下。
載入時(shí)間軸控件
/// <summary>
/// 載入時(shí)間軸控件
/// 2015-04-16
/// 吳海龍
/// </summary>
public void LoadTimeAxis()
{
SortedDictionary<string, string> sdict = new SortedDictionary<string, string>();
sdict.Add("1", "讀取配置");
sdict.Add("2", "選擇模板");
sdict.Add("3", "確認(rèn)數(shù)據(jù)");
sdict.Add("4", "生成代碼");
uta = new uctlTimeAxis(sdict,1);
uta.lc = new ToolFunction.uctlTimeAxis.TimeAxisClick(SayHello);
CommonFunction.AddForm3(splitContainer4.Panel2, uta);
}
panel容器中添加控件
/// <summary>
/// 項(xiàng)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>
/// 初始化垂直進(jìn)度軸
/// 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, "繪制失敗");
}
}
縱版進(jìn)度軸步進(jìn)方法
/// <summary>
/// 垂直步進(jìn)方法
/// /// 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;
}
}
}
畫(huà)圖屬性字段
/// <summary>
/// 藍(lán)色寬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坐標(biāo)
/// </summary>
public static int CenterOfTheCircleX = 31;
/// <summary>
/// 圓心Y坐標(biāo)
/// </summary>
public static int CenterOfTheCircleY = 46;
/// <summary>
/// 說(shuō)明條目X坐標(biāo)
/// </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>
/// 白點(diǎn)Pie半徑
/// </summary>
public static int PieRadius2 = 8;
/// <summary>
/// 圓半徑
/// </summary>
public static int CircleRadius = 9;
/// <summary>
/// 圓心距
/// </summary>
public static int CircleSpace = 80;
/// <summary>
/// 軸X起點(diǎn)
/// </summary>
public static int LineStartX = CenterOfTheCircleX;
/// <summary>
/// 軸Y起點(diǎn)
/// </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>
/// 水平標(biāo)示
/// </summary>
private static readonly int HorizontalTimeAxis = 0;
/// <summary>
/// 垂直標(biāo)志
/// </summary>
private static readonly int VerticalTimeAxis = 1;
/// <summary>
/// 繪制標(biāo)志,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;
}
}
以上所述就是本文的全部?jī)?nèi)容了,希望大家能夠喜歡。
- C#中常使用進(jìn)度條的代碼
- asp.net(c#)開(kāi)發(fā)中的文件上傳組件uploadify的使用方法(帶進(jìn)度條)
- Android文件下載進(jìn)度條的實(shí)現(xiàn)代碼
- 6款新穎的jQuery和CSS3進(jìn)度條插件推薦
- C#控制臺(tái)輸出進(jìn)度和百分比的實(shí)例代碼
- c#進(jìn)度條 progressBar 使用方法的小例子
- C# cmd中修改顯示(顯示進(jìn)度變化效果)的方法
- c#根據(jù)文件大小顯示文件復(fù)制進(jìn)度條實(shí)例
- android自定義進(jìn)度條漸變色View的實(shí)例代碼
- Jquery Uploadify上傳帶進(jìn)度條的簡(jiǎn)單實(shí)例
- C# Winform下載文件并顯示進(jìn)度條的實(shí)現(xiàn)代碼
- Android中實(shí)現(xiàn)Webview頂部帶進(jìn)度條的方法
- 基于jQuery實(shí)現(xiàn)網(wǎng)頁(yè)進(jìn)度顯示插件
- php上傳文件并顯示上傳進(jìn)度的方法
- python下載文件時(shí)顯示下載進(jìn)度的方法
相關(guān)文章
C# 中使用NModbus4通信庫(kù)執(zhí)行寫(xiě)操作
在C#中NModbus4庫(kù)提供了一個(gè)方便的方式來(lái)與支持Modbus協(xié)議的設(shè)備進(jìn)行交互,本文就來(lái)介紹了使用NModbus4通信庫(kù)執(zhí)行寫(xiě)操作,具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03
FileShare枚舉的使用小結(jié)(文件讀寫(xiě)鎖)
其實(shí)/FileShare就是控制文件流的“訪問(wèn)權(quán)限”,當(dāng)然,這僅僅是入門(mén)的文件操作,自己做了筆記,也希望能給大家?guī)?lái)幫助2014-01-01
C#中把FastReport.Net報(bào)表控件的數(shù)據(jù)保存到數(shù)據(jù)庫(kù)
這篇文章介紹了在數(shù)據(jù)庫(kù)中保存FastReport.Net報(bào)表的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06
C#自定義序列化ISerializable的實(shí)現(xiàn)方法
這篇文章主要介紹了C#自定義序列化ISerializable的實(shí)現(xiàn)方法,涉及C#序列化的操作技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04
WinForm實(shí)現(xiàn)程序一段時(shí)間不運(yùn)行自動(dòng)關(guān)閉的方法
這篇文章主要介紹了WinForm實(shí)現(xiàn)程序一段時(shí)間不運(yùn)行自動(dòng)關(guān)閉的方法,涉及WinForm計(jì)時(shí)器及進(jìn)程操作的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09

