Từ 1 tới 5 trên tổng số 5 kết quả

Đề tài: Cách hiển thị % trong ProgressBar C#?

  1. #1
    Ngày gia nhập
    05 2011
    Bài viết
    15

    Mặc định Cách hiển thị % trong ProgressBar C#?

    Chuyện là con ghệ mình nó hay thức đêm , nên mình viết soft nhỏ giấu trong Startup của nó

    PM sẽ k cho nó thức quá 11h 30 đêm. từ 11h 30 -> trước 5 h sáng thì k cho bật máy
    cái này có nhuoc điểm là thời gian máy mà bị chỉnh sai thì xem như đứt chỉ ) với lại nó biết tắt process trong startup thì die

    mình đã code xong. tiếc là mình còn vướng mắt chỗ hiện cái % của progress bar thể hiện thời gian còn lại trước khi tắt máy

    Visual C# Code:
    1. using System;
    2. using System.Collections.Generic;
    3. using System.ComponentModel;
    4. using System.Data;
    5. using System.Drawing;
    6. using System.Text;
    7. using System.Windows.Forms;
    8.  
    9.  
    10. namespace svchost
    11. {
    12.     public partial class Form1 : Form
    13.     {
    14.         public Form1()
    15.         {
    16.             InitializeComponent();
    17.         }
    18.         int tongsogiay = 0, gio = 0, phut = 0, giay=0;
    19.         double phantram=0;
    20.         int sogiayconlai = 0;
    21.  
    22.         private void Form1_Load(object sender, EventArgs e)
    23.         {
    24.             gio = DateTime.Now.Hour;
    25.             phut = DateTime.Now.Minute;
    26.             giay = DateTime.Now.Second;
    27.             if ((gio == 23 && phut >= 30) || (gio >= 0 && gio <= 4))
    28.             {
    29.                 MessageBox.Show("Giờ này là giờ ngủ ! k được mở máy ! Máy sẽ tắt trong 3 giây nữa !");
    30.                 // tại tét nên em để 3600 giây chứ fải để 3s thì mới đúng
    31.                 System.Diagnostics.Process.Start("ShutDown", "-s -t 3600");
    32.             }
    33.             else
    34.             {
    35.                 tongsogiay = (23 * 3600 + 30 * 60) - (gio * 3600 + phut * 60 + giay);
    36.                 sogiayconlai = tongsogiay;
    37.                 gio = (tongsogiay / 3600) % 24;
    38.                 phut = (tongsogiay % 3600) / 60;
    39.                 giay = (tongsogiay % 3600) % 60;
    40.  
    41.                 lblGio.Text = tongsogiay.ToString();
    42.                 lblPhut.Text = phut.ToString();
    43.                 lblGiay.Text = giay.ToString();
    44.  
    45.                 prgBar.Maximum = tongsogiay;
    46.                 timer1.Enabled = true;
    47.             }
    48.            
    49.         }      
    50.  
    51.         private void timer1_Tick(object sender, EventArgs e)
    52.         {
    53.             sogiayconlai--;
    54.  
    55.             gio = (sogiayconlai / 3600) % 24;
    56.             phut = (sogiayconlai % 3600) / 60;
    57.             giay = (sogiayconlai % 3600) % 60;            
    58.             lblGio.Text = gio.ToString();
    59.             lblPhut.Text = phut.ToString();            
    60.             lblGiay.Text = giay.ToString();
    61.            
    62.             //cảnh báo khi đến các mốc gần ngủ
    63.             canhbao();
    64.  
    65.             // progress bar tăng lên từ từ
    66.             prgBar.Value++;            
    67.            
    68.  
    69.            phantram =((double)(prgBar.Value / prgBar.Maximum) * 100);
    70.             lblPhanTram.Text = String.Format("{0:0.00 %}",phantram);
    71.  
    72.      //     lblPhanTram.Text = phantram.ToString() + " %";
    73.            
    74.         }
    75.  
    76.         // CẢNH BÁO
    77.         void canhbao()
    78.         {
    79.             if (sogiayconlai == 0)
    80.             { // nếu tới giờ đi ngủ thì shutdown máy
    81.                 timer1.Enabled = false;
    82.                 // tại tét nên em để 3600 giây chứ fải để 3s thì mới đúng
    83.                 System.Diagnostics.Process.Start("ShutDown", "-s -t 3600");
    84.  
    85.             }
    86.             // cảnh báo lần 1 : khi đến 10:30
    87.             if (sogiayconlai == 50)
    88.             {
    89.                 MessageBox.Show("1 tiếng nữa đi ngủ rồi nha! \nCó việc gì thì làm cho xong đi ^_^");
    90.             }
    91.             // cảnhbáo lần 2 khi còn đến 11 giờ
    92.             if (sogiayconlai == 40)
    93.             {
    94.                 MessageBox.Show("Còn 30 phút nữa ! Đi ngủ được rồi\nThức khuya sẽ có ");
    95.             }
    96.             // cảnh báo lần 3 : còn 10 phút nữa
    97.             if (sogiayconlai == 30)
    98.             {
    99.                 MessageBox.Show("10 phút cuối cùng ! Save tất cả công việc lại ! \nCó gì chưa hoàn thành thì mai làm vẫn k muộn");
    100.             }
    101.             // cảnh báo lần cuối : cho 5 phút chuẩn bị trước khi máy tự tắt
    102.             if (sogiayconlai == 20)
    103.             {
    104.                 MessageBox.Show("5 phút nữa máy tự tắt! Hãy chuẩn bị đi ");
    105.             }
    106.         }
    107.  
    108.        
    109.     }
    110. }


    phantram =((double)(prgBar.Value / prgBar.Maximum) * 100);
    lblPhanTram.Text = String.Format("{0:0.00 %}",phantram);
    Em lấy cái giá trị hiện tại của progress chia cho giá trị max của nó rồi x 100 thì ra % của progress rồi ! thế mà nó lại chỉ xuất ra : 0.00% rồi im re luôn, đến khi ống pro lúc cán thì nó mới hiện ra 100%

    có cả proj của em dưới đính kèm các bác ạ ! ) sory vì em phải để tên project giống như process của Windown (svchost) cho bạn gái nó k biết mà tắt khỏi StartUp

    Bác nào thấy tốt cứ lấy về áp dụng cho vợ mình )
    Attached Files Attached Files
    Đã được chỉnh sửa lần cuối bởi huyrua350 : 25-02-2012 lúc 03:12 PM.

  2. #2
    Ngày gia nhập
    08 2011
    Nơi ở
    Yên Bái- Hà Nội
    Bài viết
    961

    Mình chưa chạy thử. Trước hết thank bác đã chia sẻ. Nhìn dòng đó thì hình như bác ăn chướng phép chia số nguyên cho số nguyên=> kết quả là số nguyên . Sau đó bác convert về số thực nhưng hơi muộn. Mình chưa sửa và chạy thử. Bạn sửa thế này xem ổn ko?

    prgBar.Value /(double) prgBar.Maximum or prgBar.Value /( prgBar.Maximum*1.0),...( không ở dạng int/int là ok)
    Skype: mrfour.it - Yahoo:mrfour_it
    Gmail: mrfour.it@gmail.com
    Bạn muốn học lập trình? Bạn chưa có kiến thức cơ bản? Bạn muốn học từ cơ bản tới nâng cao?... Bạn muốn có source code để tham khảo? Muốn có người hỗ trợ khi học?....http://www.laptrinh123.com sẽ giúp bạn những điều đó!

  3. #3
    Ngày gia nhập
    05 2011
    Bài viết
    15

    Trích dẫn Nguyên bản được gửi bởi mrfour.it Xem bài viết
    Mình chưa chạy thử. Trước hết thank bác đã chia sẻ. Nhìn dòng đó thì hình như bác ăn chướng phép chia số nguyên cho số nguyên=> kết quả là số nguyên . Sau đó bác convert về số thực nhưng hơi muộn. Mình chưa sửa và chạy thử. Bạn sửa thế này xem ổn ko?

    prgBar.Value /(double) prgBar.Maximum or prgBar.Value /( prgBar.Maximum*1.0),...( không ở dạng int/int là ok)

    thanks bác ! thế mà em không nghĩ ra )

    đã sửa CODE hoàn chỉnh ! Bác nào cần cứ xúc


    Visual C# Code:
    1. using System;
    2. using System.Collections.Generic;
    3. using System.ComponentModel;
    4. using System.Data;
    5. using System.Drawing;
    6. using System.Text;
    7. using System.Windows.Forms;
    8.  
    9.  
    10. namespace svchost
    11. {
    12.     public partial class Form1 : Form
    13.     {
    14.         public Form1()
    15.         {
    16.             InitializeComponent();
    17.         }
    18.         int tongsogiay = 0, gio = 0, phut = 0, giay=0;
    19.         double phantram=0;
    20.         int sogiayconlai = 0;
    21.  
    22.         private void Form1_Load(object sender, EventArgs e)
    23.         {
    24.             gio = DateTime.Now.Hour;
    25.             phut = DateTime.Now.Minute;
    26.             giay = DateTime.Now.Second;
    27.             if ((gio == 23 && phut >= 30) || (gio >= 0 && gio <= 4))
    28.             {
    29.                 // ( cho 1s thôi. nếu lâu hơn, nó kịp shutdown -a đấy :)) )
    30.                 MessageBox.Show("Giờ này là giờ ngủ ! k được mở máy ! Máy sẽ tắt trong 3 giây nữa !");
    31.                 System.Diagnostics.Process.Start("ShutDown", "-s -t 1");
    32.             }
    33.             else
    34.             {
    35.                 tongsogiay = (23 * 3600 + 30 * 60) - (gio * 3600 + phut * 60 + giay);
    36.              
    37.                 sogiayconlai = tongsogiay;
    38.                 gio = (tongsogiay / 3600) % 24;
    39.                 phut = (tongsogiay % 3600) / 60;
    40.                 giay = (tongsogiay % 3600) % 60;
    41.                
    42.                 lblGio.Text = tongsogiay.ToString();
    43.                 lblPhut.Text = phut.ToString();
    44.                 lblGiay.Text = giay.ToString();
    45.  
    46.                 prgBar.Maximum = tongsogiay;
    47.                 timer1.Enabled = true;
    48.             }
    49.            
    50.         }      
    51.  
    52.         private void timer1_Tick(object sender, EventArgs e)
    53.         {
    54.             sogiayconlai--;
    55.  
    56.             gio = (sogiayconlai / 3600) % 24;
    57.             phut = (sogiayconlai % 3600) / 60;
    58.             giay = (sogiayconlai % 3600) % 60;            
    59.             lblGio.Text = gio.ToString();
    60.             lblPhut.Text = phut.ToString();            
    61.             lblGiay.Text = giay.ToString();
    62.            
    63.             //cảnh báo khi đến các mốc gần ngủ
    64.             canhbao();
    65.  
    66.             // progress bar tăng lên từ từ
    67.             prgBar.Value++;
    68.  
    69.             phantram = ((prgBar.Value / (double)prgBar.Maximum) * 100);  
    70.  
    71.             lblPhanTram.Text = phantram.ToString("0.00") + " %";
    72.            
    73.         }
    74.  
    75.         // CẢNH BÁO
    76.         void canhbao()
    77.         {
    78.             if (sogiayconlai == 0)
    79.             { // nếu tới giờ đi ngủ thì shutdown máy
    80.                 // ( cho 1s thôi. nếu lâu hơn, nó kịp shutdown -a đấy :)) )
    81.                 System.Diagnostics.Process.Start("ShutDown", "-s -t 1");
    82.                 timer1.Enabled = false;                
    83.             }
    84.             // cảnh báo lần 1 : 1 tiếng truoc khi đi ngủ
    85.             if (sogiayconlai == 3600)
    86.             {
    87.                 MessageBox.Show("1 tiếng nữa đi ngủ rồi nha! \nCó việc gì thì làm cho xong đi ^_^");
    88.             }
    89.             // cảnhbáo lần 2 khi còn đến 11 giờ ( 30 phut truoc khi ngủ )
    90.             if (sogiayconlai == 1800)
    91.             {
    92.                 MessageBox.Show("Còn 30 phút nữa ! Đi ngủ được rồi\nThức khuya sẽ có ");
    93.             }
    94.             // cảnh báo lần 3 : còn 10 phút nữa
    95.             if (sogiayconlai == 600)
    96.             {
    97.                 MessageBox.Show("10 phút cuối cùng ! Save tất cả công việc lại ! \nCó gì chưa hoàn thành thì mai làm vẫn k muộn");
    98.             }
    99.             // cảnh báo lần cuối : cho 5 phút chuẩn bị trước khi máy tự tắt
    100.             if (sogiayconlai == 300)
    101.             {
    102.                 MessageBox.Show("5 phút nữa máy tự tắt! Hãy chuẩn bị đi ");
    103.             }
    104.         }
    105.  
    106.        
    107.     }
    108. }

    KHUYẾN CÁO : muốn tét nhớ chỉnh lại chỗ thời gian -t nhé . mình để 1s cho bạn gái k có cơ hội shutdown -a ) test mà để 1s thì coi như các bác tắt máy liên tục đấy )

  4. #4
    Ngày gia nhập
    08 2011
    Nơi ở
    Yên Bái- Hà Nội
    Bài viết
    961

    hi.Không có gì. T cũng phải thank bạn đã chia sẻ mà. Nhưng có vẻ nghiêm khắc với bạn gái quá ta.
    Skype: mrfour.it - Yahoo:mrfour_it
    Gmail: mrfour.it@gmail.com
    Bạn muốn học lập trình? Bạn chưa có kiến thức cơ bản? Bạn muốn học từ cơ bản tới nâng cao?... Bạn muốn có source code để tham khảo? Muốn có người hỗ trợ khi học?....http://www.laptrinh123.com sẽ giúp bạn những điều đó!

  5. #5
    Ngày gia nhập
    10 2010
    Nơi ở
    HUI
    Bài viết
    211

    Trích dẫn Nguyên bản được gửi bởi huyrua350 Xem bài viết

    PM sẽ k cho nó thức quá 11h 30 đêm. từ 11h 30 -> trước 5 h sáng thì k cho bật máy
    cái này có nhuoc điểm là thời gian máy mà bị chỉnh sai thì xem như đứt chỉ ) với lại nó biết tắt process trong startup thì die
    Tạo một webservice lấy giờ từ server về. Đảm bảo nó chỉnh giờ vẫn die.
    Nhược điểm: không có mạng internet thì vẫn tèo?

Các đề tài tương tự

  1. Cách tạo Progressbar trong GridView như thế nào?
    Gửi bởi stalinz trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 0
    Bài viết cuối: 28-11-2011, 02:16 PM
  2. Giả lập progressbar trong Devexpress
    Gửi bởi tieubinhbinh trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 0
    Bài viết cuối: 06-11-2011, 08:12 PM
  3. Tạo thanh chạy gần như ProgressBar với màu tương ứng trong C#
    Gửi bởi tuanshaker0 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 8
    Bài viết cuối: 30-06-2011, 09:07 AM
  4. Sử dụng progressbar và timer để đếm thời gian trong C#?
    Gửi bởi gioemodau trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 14-03-2011, 12:20 PM
  5. hỏi Progressbar trong thread
    Gửi bởi trung trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 4
    Bài viết cuối: 15-01-2009, 07:31 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn