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

Đề tài: còn cách nào khác ngoài Timer?? help..

  1. #1
    Ngày gia nhập
    03 2009
    Bài viết
    13

    Question còn cách nào khác ngoài Timer?? help..

    Em xài Timer để đếm thời gian nhưng mà gặp phải vấn đề :
    níu chèn cái vòng lặp while lâu lâu chút hay khi dùng chuột move form thì timer cũng đơ luôn. .
    Các anh có cách nào giúp em với hic...thanks nhìu nhìu.
    Đã được chỉnh sửa lần cuối bởi gabygabby : 20-03-2009 lúc 07:08 PM.

  2. #2
    Ngày gia nhập
    11 2007
    Nơi ở
    Biết để làm gì?
    Bài viết
    827

    Chưa rõ lắm,bạn cho cả code lên xem sao?thế này thì chịu
    Cánh Chym ứ mỏi

  3. #3
    Ngày gia nhập
    03 2009
    Bài viết
    13

    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. namespace WindowsApplication2
    10. {
    11.     public partial class Form1 : Form
    12.     {
    13.        
    14.        
    15.        
    16.         Timer reduceOpacity;
    17.         Timer increaseOpacity;
    18.         public Form1()
    19.         {
    20.             InitializeComponent();
    21.  
    22.             this.Deactivate += new System.EventHandler(this.Form1_Deactivate);
    23.            
    24.             this.Activated += new System.EventHandler(this.Form1_Activated);
    25.            
    26.  
    27.  
    28.  
    29.             this.FormBorderStyle = FormBorderStyle.None;
    30.             this.BackColor = Color.White;
    31.             this.Opacity = 1;
    32.             increaseOpacity = new Timer();
    33.             reduceOpacity = new Timer();
    34.  
    35.  
    36.            
    37.             reduceOpacity.Interval = increaseOpacity.Interval = 5;
    38.             increaseOpacity.Tick += new EventHandler(increaseOpacity_Tick);
    39.             reduceOpacity.Tick += new EventHandler(reduceOpacity_Tick);
    40.            
    41.         }
    42.  
    43.         private void reduceOpacity_Tick(object sender, EventArgs e)
    44.         {
    45.             this.Opacity -=0.03;
    46.             if(this.Opacity <= 0.3) reduceOpacity.Stop();
    47.         }
    48.  
    49.         private void increaseOpacity_Tick(object sender, EventArgs e)
    50.         {
    51.             this.Opacity +=0.03;
    52.             if(this.Opacity >= 1) increaseOpacity.Stop();
    53.  
    54.  
    55. //->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    56.             for (double i = 0; i < 1000000; i += 0.001)
    57.             { }
    58. //->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    59.         }
    60.  
    61.  
    62.        
    63.  
    64.        
    65.  
    66.        
    67.         private void Form1_Activated(object sender, EventArgs e)
    68.         {
    69.             reduceOpacity.Stop();
    70.             increaseOpacity.Start();
    71.         }
    72.  
    73.         private void Form1_Deactivate(object sender, EventArgs e)
    74.         {
    75.             increaseOpacity.Stop();
    76.             reduceOpacity.Start();
    77.         }
    78.  
    79.      
    80.     }
    81. }

    cụ thể là cái này níu như em deactive cái form thì nó sẽ mờ dần, active thì sẽ rõ dần lên (bằng cách kick chuột ra destop hay vào form).
    vòng lặp for(double i = 0; i<100000; i+=0.001) {} làm cho Timer không thể làm việc => form ko thể rõ len đc mặc dù chương trình ko bị treo.!!
    Vậy thì còn cách nào khác để form vẫn rõ lên = cách tăng Opacity ko??
    Đã được chỉnh sửa lần cuối bởi gabygabby : 20-03-2009 lúc 08:44 PM.

  4. #4
    Ngày gia nhập
    10 2007
    Nơi ở
    Gameloft studio
    Bài viết
    175

    Test qua code của bạn rồi, nếu bỏ dòng lệnh this.FormBorderStyle = FormBorderStyle.None; để form có thể di chuyển và làm theo ý bạn nói: khi click vào form và di chuyển ngay, máy mình vẫn hiện tốt trong lúc di chuyển thôi, ko có gì ảnh hưởng như cậu trình bày cả. Không hiểu bên máy của b thế nào? hay cậu có nhầm trong bài viết gì ko?
    Không biết ghi gì luôn ...

  5. #5
    Ngày gia nhập
    03 2009
    Bài viết
    13

    code chính xác trên máy mình đây bạn nhớ chèn thêm cái backImage cỡ bự vào nhé )
    cứ click ra rồi vào + drag là khỏi rõ lại luôn.

    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. namespace WindowsApplication2
    10. {
    11.     public partial class Form1 : Form
    12.     {
    13.        
    14.         private bool dragging;
    15.        
    16.         private Point pointClicked;
    17.  
    18.         Timer inactive;
    19.         Timer active;
    20.         public Form1()
    21.         {
    22.             InitializeComponent();
    23.  
    24.             this.FormBorderStyle = FormBorderStyle.None;
    25.             this.BackColor = Color.White;
    26.             this.Opacity = 1;
    27.             active = new Timer();
    28.             inactive = new Timer();
    29.  
    30.  
    31.             this.Deactivate += new System.EventHandler(this.Form1_Deactivate);
    32.             this.MouseUp += new System.Windows.Forms.MouseEventHandler(this.Form1_MouseUp);
    33.             this.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.Form1_MouseDoubleClick);
    34.             this.Activated += new System.EventHandler(this.Form1_Activated);
    35.             this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Form1_MouseDown);
    36.             this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.Form1_MouseMove);
    37.  
    38.            
    39.             inactive.Interval = active.Interval = 5;
    40.             active.Tick += new EventHandler(active_Tick);
    41.             inactive.Tick += new EventHandler(inactive_Tick);
    42.            
    43.         }
    44.  
    45.         private void inactive_Tick(object sender, EventArgs e)
    46.         {
    47.             this.Opacity -=0.03;
    48.             if(this.Opacity <= 0.3) inactive.Stop();
    49.         }
    50.  
    51.         private void active_Tick(object sender, EventArgs e)
    52.         {
    53.             this.Opacity +=0.03;
    54.             if(this.Opacity >= 1) active.Stop();
    55.         }
    56.  
    57.         private void button1_Click(object sender, EventArgs e)
    58.         {
    59.             this.Close();
    60.         }
    61.  
    62.         private void Form1_MouseDown(object sender, MouseEventArgs e)
    63.         {
    64.            if (e.Button == MouseButtons.Right) this.WindowState = FormWindowState.Minimized;
    65.             if (e.Button == MouseButtons.Left)
    66.             {
    67.                 dragging = true;
    68.                 pointClicked = new Point(e.X, e.Y);
    69.             }
    70.             else
    71.             {
    72.                 dragging = false;
    73.             }
    74.         }
    75.  
    76.         private void Form1_MouseMove(object sender, MouseEventArgs e)
    77.         {
    78.             if (dragging)
    79.             {
    80.                 Point pointMoveTo;
    81.                
    82.                 pointMoveTo = this.PointToScreen(new Point(e.X, e.Y));
    83.  
    84.                 pointMoveTo.Offset(-pointClicked.X, -pointClicked.Y);
    85.              
    86.                 this.Location = pointMoveTo;
    87.             }
    88.         }
    89.  
    90.         private void Form1_MouseUp(object sender,System.Windows.Forms.MouseEventArgs e)
    91.         {
    92.            
    93.             dragging = false;
    94.         }
    95.  
    96.         private void Form1_MouseDoubleClick(object sender, MouseEventArgs e)
    97.         {
    98.             if(e.Button == MouseButtons.Left) this.Close();
    99.         }
    100.  
    101.        
    102.  
    103.        
    104.  
    105.        
    106.  
    107.        
    108.         private void Form1_Activated(object sender, EventArgs e)
    109.         {
    110.             inactive.Stop();
    111.             active.Start();
    112.         }
    113.  
    114.         private void Form1_Deactivate(object sender, EventArgs e)
    115.         {
    116.             active.Stop();
    117.             inactive.Start();
    118.         }
    119.  
    120.      
    121.     }
    122. }
    Đã được chỉnh sửa lần cuối bởi gabygabby : 20-03-2009 lúc 09:26 PM.

  6. #6
    Ngày gia nhập
    10 2007
    Nơi ở
    Gameloft studio
    Bài viết
    175

    Mặc định còn cách nào khác ngoài Timer?? help..

    Hic, Không hiểu vì sao, bên mình vẫn chạy tốt, không gặp trường hợp như bên bạn (mặc dù đã chèn BackImage cữ bự, và cho phép drap form, copy code của bạn vào luôn đó). Khó hiểu
    Không biết ghi gì luôn ...

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

  1. Bài tập C nhờ các anh em test giùm đoạn code này xem còn lỗi nào phát sinh ngoài ý muốn ko.
    Gửi bởi shizuoka trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 6
    Bài viết cuối: 20-11-2012, 07:03 AM
  2. Còn độc quyền, dân còn xài điện giá cao
    Gửi bởi vietlongs2012 trong diễn đàn Giải trí - Thư giãn
    Trả lời: 2
    Bài viết cuối: 20-03-2012, 10:43 PM
  3. làm sao để timer chờ cho button thực hiện hết lệnh rồi thì timer lặp tiếp
    Gửi bởi chitviv trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 4
    Bài viết cuối: 19-07-2011, 04:14 PM
  4. Dừng chương trình chờ Timer thực thi
    Gửi bởi nhonx trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 3
    Bài viết cuối: 03-06-2011, 10:01 PM
  5. MFC - Lớp Timer Bị lỗi ở đâu
    Gửi bởi Cpro trong diễn đàn Windows API, Hooking, xử lý Windows Message
    Trả lời: 9
    Bài viết cuối: 15-02-2009, 10:49 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