<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="322" Width="525"> <Grid Height="218" Margin="0,3" HorizontalAlignment="Left" Width="517"> <Grid.RowDefinitions> <RowDefinition Height="105*"/> <RowDefinition Height="113*"/> </Grid.RowDefinitions> <Rectangle Height="28" HorizontalAlignment="Left" Margin="64,24,0,0" Name="rectangle1" Stroke="Black" VerticalAlignment="Top" Width="0" /> <Label Content="进度:" Height="28" HorizontalAlignment="Left" Margin="12,26,0,0" Name="label1" VerticalAlignment="Top" /> <Button Content="开 始" Height="23" HorizontalAlignment="Left" Margin="206,123,0,-33" Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click" Grid.Row="1" /> <Label Content="0%" Margin="71,24,0,53" Name="label2" HorizontalAlignment="Left" Width="46" /> <TextBox TextWrapping ="Wrap" HorizontalAlignment="Left" Margin="12,57,0,10" Name="textBox1" Width="421" Grid.RowSpan="2" TextChanged="textBox1_TextChanged" /> </Grid></Window>
using System;
using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading;using System.Threading.Tasks;using System.Windows;using System.Windows.Controls;using System.Windows.Data;using System.Windows.Documents;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Imaging;using System.Windows.Navigation;using System.Windows.Shapes;using System.Windows.Threading;using System.Data;using System.Data.SqlClient;namespace WpfApplication1{ /// <summary> /// MainWindow.xaml 的交互逻辑 /// </summary> //public partial class MainWindow : Window //{ // public MainWindow() // { // InitializeComponent(); // } // private void button1_Click(object sender, RoutedEventArgs e) // { // } // private void textBox1_TextChanged(object sender, TextChangedEventArgs e) // { // } //} public partial class MainWindow : Window { public static double percent = 0; public static int counts = 0; public static int cc = 0; public static List<Menu> list = null; public static List<Menu> queryProgress() { SqlConnection conn = new SqlConnection(); conn.ConnectionString = "Data Source=.;Initial Catalog=CompanyGZ;Integrated Security=True"; SqlCommand cmd = new SqlCommand(); string sql = "SELECT * FROM Menu;"; cmd.Connection = conn; cmd.CommandText = sql; conn.Open(); SqlDataAdapter adp = new SqlDataAdapter(cmd); DataSet ds = new DataSet(); adp.Fill(ds); DataTable dt = ds.Tables[0]; list = new List<Menu>(); list = DataTable2List(dt); counts = int.Parse(ds.Tables[0].Rows.Count.ToString()); return list; } private static List<Menu> DataTable2List(DataTable dt) { if (dt.Rows.Count > 0) { List<Menu> list = new List<Menu>(); Menu model = null; foreach (DataRow dr in dt.Rows) { model = new Menu(); LoadEntityData(model, dr); list.Add(model); } return list; } return null; } public static void LoadEntityData(Menu model, DataRow dr) { if (dr.Table.Columns.Contains("mId") && !dr.IsNull("mId")) { model.Mid = int.Parse(dr["mId"].ToString()); } model.MName = dr["mName"].ToString(); model.MIsDel = Convert.ToBoolean(dr["mIsDel"]); model.MAddtime = Convert.ToDateTime(dr["mAddtime"]); } private delegate int BrushProcessHandle(); public MainWindow() { InitializeComponent(); } Thickness tmpT; private void button1_Click(object sender, RoutedEventArgs e) { queryProgress(); this.rectangle1.Width = 0; i = 1; if (tmpT.Left == 0 && tmpT.Top == 0 && tmpT.Right == 0 && tmpT.Bottom == 0) { tmpT = this.label2.Margin; } else { this.label2.Margin = tmpT; } this.textBox1.Text = "do working..."; // 注释此句将百分比将会一直在进度条头部显示 this.label2.Margin = new Thickness(this.label2.Margin.Left - 52, this.label2.Margin.Top, this.label2.Margin.Right, this.label2.Margin.Bottom); // 取消注释字体颜色为白色 //this.label2.Foreground = Brushes.White; // 取消注释字体为斜体 //this.label2.FontStyle = FontStyles.Italic; BrushProcessBar(); } private DispatcherTimer dt; private int i = 1; private void BrushProcessBar() { dt = new DispatcherTimer(); dt.Interval = new TimeSpan(10000); dt.Tick += new EventHandler(dt_Tick); dt.Start(); } protected void dt_Tick(object sender, EventArgs e) { // 纯色进度条 //SolidColorBrush scb = new SolidColorBrush(); //scb.Color = Color.FromRgb(63, 134, 231); // 渐变进度条 LinearGradientBrush scb = new LinearGradientBrush(Color.FromRgb(63, 169, 233), Color.FromRgb(16, 111, 197), 0); this.rectangle1.Width = i++; this.label2.Margin = new Thickness(this.label2.Margin.Left + 1, this.label2.Margin.Top, this.label2.Margin.Right, this.label2.Margin.Bottom); this.rectangle1.Fill = scb; //if (i == 50 || i == 120 || i == 410) //{ // Thread.Sleep(200); //} //this.label2.Content = Decimal.Round(((decimal)i) / 400 * 100, 2) + "%";//i == 400 if (percent == 100) { dt.Stop(); // this.label2.Visibility =Visibility.Hidden; this.textBox1.Text += "\r\nCompleted"; } else { if (cc <= counts) { cc=cc+1; } textBox1.Text = "do working..."; for (int j = 0; j < 6; j++) { if (cc + j >= counts) { percent = 100; this.label2.Content = ("" + Convert.ToInt16(percent) + "%"); return ; // Decimal.Round(((cc)) / counts * 100, 2) + "%";//i == 400 } textBox1.Text += "\n"+list[cc+j].Mid + ":" + list[cc+j].MName + ":" + list[cc+j].MIsDel + list[cc+j].MAddtime+"\n"; percent =Convert.ToDouble( cc )/ counts*100; this.label2.Content =(""+Convert.ToInt16( percent)+ "%");//i == 400 } //this.textBox1.Text+= if (percent == 100) return; } } private void Window_Loaded(object sender, RoutedEventArgs e) { } private void textBox1_TextChanged(object sender, TextChangedEventArgs e) { } }}