PDA

View Full Version : Lập trình C# | Tạo chữ chạy trên winform trong lập trình C#



jack
17-05-2007, 02:54 PM
Tạo dòng chữ chạy trên Winform như hình mẫu:

http://files.myopera.com/hongocnet/albums/265813/IMG9CW4EHROW0.jpg


Bước 1: tạo 1 label1. Ghi gì vào đó tùy bạn, ở đây tôi ghi là Je t'aime
Bước 2: tạo 1 timer1 và thiết lập các giá trị cho nó như sau
+ Enabled = true (cái này rất quan trọng nè)
+ cho Invertal =1000( giá trị bao nhiêu tùy bạn)
Bước 3: Click double vào timer1 và nhập vào : label1.Left += 10;

private void timer1_Tick(object sender, EventArgs e)
{
label1.Left += 10;// Left là chạy từ bên trái. Bạn có thể thay = right
}

Mr Kill
18-05-2007, 10:04 AM
Thế này thì Timer1 chạy đến bao giờ mới dừng lại? Đánh giá 2 sao

jack
18-05-2007, 08:06 PM
Theo Mr Kill thì làm như thế nào để dòng chữ khi chạy đến lề bên phải thì dừng. Lúc Post bài định hỏi như thế nhưng ko biết sao lại quên mất. Mình mới học .NET mong các bạn góp ý!
Thanks

neverland87
18-05-2007, 10:33 PM
Cũng không có gì khó khăn lắm, chẳng hạn ban đầu label1 có thuộc tính Left = 20 đi nhé, bây giờ mình muốn nó chạy đến Left = 100 là tối đa, nếu vượt qua mốc này thì không chạy nữa thì chỉ việc đơn giản chỉnh timer1.Enabled=false. Thế là xong! Cụ thể code minh họa như sau:


private void timer1_Tick(object sender, EventArgs e)
{
label1.Left += 10;
if (label1.Left >= 100)
timer1.Enabled = false;
}

jack
18-05-2007, 11:25 PM
Rất hay! còn nếu như để cho nó chạy vòng thì sao, giả dụ khi chạy đến lề bên phải thì nó chạy ngược trở lại.
Bạn giúp mình nhé!

NoBi
18-05-2007, 11:53 PM
Mình code tạm cho bạn xem, có gì chỉnh sửa cho phù hợp nhé:

public int i = 10;
private void timer1_Tick(object sender, EventArgs e)
{
label1.Left += i;
if (label1.Left >= this.Width - label1.Width || label1.Left<=0)
i=-i;
}

trickyboy
19-05-2007, 12:20 AM
Chà, vậy dùng cái Timer này tạo flash screen khi startup 1 program code bằng VS 2003 được rùi. VS 2005 thì support tự tạo dùm luôn, chả hiểu sao 2003 lại ko :(

Demo bằng VB chơi, giả sử Flash green là 1 Form1, Form chính là Form2. Kéo Timer wăng vô Form1, set Enable = true, Interval cho 1,2 nghìn gì tùy, sau đó:



Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Me.Hide()
Dim frm As New Form2
frm.Show()
Timer1.Enabled = False
End Sub


Nhưng lưu ý khi Form2 Exit là phải Exit toàn bộ, chứ hem phải chỉ Close đâu nha :D. Code cho Button Exit bên Form2


Private Sub btnExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExit.Click
Application.Exit()
End Sub


Code đơn giản minh họa thêm cho Timer , mong pà k0n đừng cười

jack
19-05-2007, 08:55 AM
Chào Nobi, mình thanks bạn nhiều!
Code rất hay nhưng có chỗ mình chưa hiểu, bạn có thể giải thích rõ hơn ở chỗ câu lệnh if được ko.
Chúc bạn vui vẻ!

Nobi ơi cho mình xin nick yahoo được ko?

NoBi
19-05-2007, 05:11 PM
Bạn cứ debug từ từ thì sẽ hiểu ngay thôi. Có gì thắc mắc trên forum này, mình sẽ trả lời bạn nhé!.

BuithiHa
30-05-2007, 03:56 PM
Cho hỏi là label khi di chuyển nó có biết dừng khi chạm 1 label khác không?(tức vật cản trên form. Thanks

Xcross87
30-05-2007, 05:02 PM
_Xử lý label chạy cài đặt vào các Panel khác nhau nếu không thì phải kiểm so sánh tọa độ với khả năng va chạm. Nói chung là cái này chỉ để biết thôi chứ có dùng đâu ^^

soda_chanhmuoi
30-05-2007, 05:07 PM
Hờ, nó không biết dừng, lập trình cho nó dừng thì nó mới dừng , khi chạm là khi khoảng cách 2 cái =0 :D

nampt
30-05-2007, 05:23 PM
Theo Mr Kill thì làm như thế nào để dòng chữ khi chạy đến lề bên phải thì dừng. Lúc Post bài định hỏi như thế nhưng ko biết sao lại quên mất. Mình mới học .NET mong các bạn góp ý!
Thanks

Nếu vị trí của label (Location) >= cỡ của Form (Size) trừ đi cỡ của label thì đó là lúc label chạy đến cuối form (theo chiều X hoặc Y)
Theo như ý bạn thì ta chỉ cần xét trên chiều X

nampt
30-05-2007, 05:29 PM
//Nếu form là đối tượng this, label có tên là label1 thì:

if(label1.Location.X >= this.Size.Width - label1.Size.Width)
{
//Muốn viết gì vào đây thì viết
//Cho nó chạy ngược lại chẳng hạn
//Tôi chẳng nhớ đoạn mã chạy lúc nãy là gì nên spam vậy
}

thaivinhhuy
03-06-2007, 01:43 PM
Tạo dòng chữ chạy trên Winform như hình mẫu:

http://files.myopera.com/hongocnet/albums/265813/IMG9CW4EHROW0.jpg


Bước 1: tạo 1 label1. Ghi gì vào đó tùy bạn, ở đây tôi ghi là Je t'aime
Bước 2: tạo 1 timer1 và thiết lập các giá trị cho nó như sau
+ Enabled = true (cái này rất quan trọng nè)
+ cho Invertal =1000( giá trị bao nhiêu tùy bạn)
Bước 3: Click double vào timer1 và nhập vào : label1.Left += 10;

private void timer1_Tick(object sender, EventArgs e)
{
label1.Left += 10;// Left là chạy từ bên trái. Bạn có thể thay = right
}



bó chân, timer 1 đi không trở về, đánh giá very bed

ThanhDN
04-06-2007, 10:00 AM
:D chạy thế này mơi pro này
tạo một timer
ghi đoạn code này vào


private void timer1_Tick(object sender, EventArgs e)
{
text1.Text = text1.Text.Substring(text1.Text.Length-1, 1) + text1.Text.Substring(0, text1.Text.Length - 1);
}

chạy như quảng cáo.

BuithiHa
04-06-2007, 02:28 PM
Rất hay đấy, mình cám ơn nhiều

BuithiHa
04-06-2007, 03:01 PM
Nhưng theo mình chữ Việt nên cho chạy từ phải qua trái:
//code
private void timer1_Tick(object sender, EventArgs e)
{

string ch = label1.Text;
label1.Text = label1.Text.Substring(1,label1.Text.Length-1);
label1.Text += ch.Substring(0,1);
}

ThanhDN
04-06-2007, 04:02 PM
À đúng , :D quên khang .
Nhưng làm cho chữ chạy thì nên thêm vào một số kí tự space ,
VD : string st = " thanhDN";
<chết (dòng này mới viết) , diễn đàn ko cho ghi nhiều dấu cách hay sao , ý mình muốn là cho thêm vài dấu cách trước string thanhDN
thế là đọc chậm chậm từ từ .

samfisher
08-01-2008, 04:39 PM
thanks mình làm dc rùi,đẹp thật thanks bro nhiều

victory10
08-01-2008, 07:45 PM
thế còn làm chữ chạy từ dưới lên trong text box thì thế nào các bác?

ThanhDN
08-01-2008, 11:38 PM
ac thuộc tính top thôi

victory10
09-01-2008, 12:16 PM
chạy trong text box mà?

ThanhDN
10-01-2008, 06:49 PM
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace ChuChay
{
public partial class Form1 : Form
{
const string str = "CongDongCViet";
int i = 20;
public Form1()
{
InitializeComponent();
}

private void timer1_Tick(object sender, EventArgs e)
{
TextBox1.Text = "";
for (int j = 1; j <= i; j++)
{
TextBox1.Text += Environment.NewLine;
}
TextBox1.Text = TextBox1.Text + str;
i -= 1;
if (i == -1) {
i = 20;
}
}
}
}

SpecialUsers
02-05-2009, 01:31 AM
private void timer1_Tick(object sender, EventArgs e) bác viết đoạn này giải thích giùm em cái này với, em mới làm thử nhưng không biết nó là sự kiện của cái nào và sự kiện gì cho cái đó

meoconlongvang
02-05-2009, 07:22 AM
Tạo control Timer, đặt tên là timer1, ánh xạ sự kiện Tick vào.

qanlh_soft
09-05-2009, 12:24 AM
thế còn làm chữ chạy từ dưới lên trong text box thì thế nào các bác?

source here
@admin : Nội dung bài viết quá ngắn. Vui lòng cho bài viết của bạn dài hơn ít nhất 16 ký tự (:X)

le xuan tuyen
10-05-2009, 11:38 PM
Bác nào có thể giúp em làm chữ chạy trên Form ko? tức là chữ xẽ chạy trong thuộc tính TEXT của Form ấy ah.em thử làm mà ko dc.

ducthiem90
11-05-2009, 03:25 AM
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
private System.Windows.Forms.Timer timer1;
private System.ComponentModel.IContainer components = null;

public Form1()
{
InitializeComponent();
}
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.timer1 = new System.Windows.Forms.Timer(this.components);
this.SuspendLayout();
//
// timer1
//
this.timer1.Enabled = true;
this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(292, 266);
this.Name = "Form1";
this.Text = "Xin chao cac ban ";
this.ResumeLayout(false);

}
private void timer1_Tick(object sender, EventArgs e)
{
string ch = this.Text;
this.Text = this.Text.Substring(1, this.Text.Length - 1);
this.Text += ch.Substring(0, 1);
}
public static void Main()
{
Application.Run(new Form1());
}
}
}

le xuan tuyen
11-05-2009, 10:32 PM
Em làm dc rùi pro ah. Thank Pro nak.

usernamepro
26-06-2009, 01:04 AM
uhm . Bài của ban NOBI có vẻ hay đấy Thanks bạn nha! Tiếp tục phát huy cho anh em nha Pan!

Rongcon.com.vn
09-06-2010, 11:14 PM
Đành làm TombRaider 1 tí vậy, có bác nào biết cách làm chữ chạy dưới thanh status không

viettuqn
16-06-2010, 05:28 PM
hay day minh se ve lam thu dc ko!
a minh la thanh vien moi hoc c# nen mong cac ban giup do !

lonelyeveningstar
06-08-2010, 11:27 PM
cho mình hỏi làm chữ chạy như trong trình diễn powerpoint thì sao nhĩ

tienqb
08-09-2010, 09:33 AM
cho mình hỏi làm chữ chạy như trong trình diễn powerpoint thì sao nhĩ

Nó có nhiều kiểu. U thích kiểu chi?

llvllrSi
08-11-2010, 10:07 PM
cho e hỏi: khi muốn cho label chạy từ trái sang phải đến 1 điểm xác định.rùi cho nó chạy tiếp xuống bên dưới thì làm thế nào ạ

bocosuka
06-12-2010, 05:21 AM
cho e hỏi: khi muốn cho label chạy từ trái sang phải đến 1 điểm xác định.rùi cho nó chạy tiếp xuống bên dưới thì làm thế nào ạ


private void Form1_Load(object sender, EventArgs e)
{
label1.Location = new Point(x, y);
timer1.Interval = 50;
timer1.Start();
}

int x = 50, y = 50, dric = 0;

private void timer1_Tick(object sender, EventArgs e)
{
if (dric == 0)
x++;
else if (dric == 1)
y++;
else if (dric == 2)
x--;
else if (dric == 3)
y--;
label1.Location = new Point(x, y);
if (x == 50 && y == 50)
dric = 0;
else if (x == 100 && y == 50)
dric = 1;
else if (x == 100 && y == 100)
dric = 2;
else if (x == 50 && y == 100)
dric = 3;
}

bạn có thể viết gọn hơn (:-)??

tuantep
17-12-2010, 02:41 PM
// Do running label
if (label1.Left >= formsize - label1.Width)
checker = true;
if (label1.Left <= 0)
checker = false;

if (checker)
{
label1.Left -= 5;
}
else
label1.Left += 5;

hong
21-12-2010, 09:42 AM
Các bài trên rất hay mình đã làm được rồi nhưng cho mình hỏi 1 chút ví dụ như dòng chữ đang chạy bây giờ làm thế nào để khi mình bấm mouse vào đó thì dòng chữ đứng lại và bấm 1 phát nữa thì tiếp tục chạy. Mong các bác giúp đỡ và cho 1 code đầy đủ.

tham tu conan
21-12-2010, 01:33 PM
Các bài trên rất hay mình đã làm được rồi nhưng cho mình hỏi 1 chút ví dụ như dòng chữ đang chạy bây giờ làm thế nào để khi mình bấm mouse vào đó thì dòng chữ đứng lại và bấm 1 phát nữa thì tiếp tục chạy. Mong các bác giúp đỡ và cho 1 code đầy đủ.

nếu bạn dùng timertick thì dễ, bạn viết trong sự kiện mouseclick của đối tượng bạn click dòng code sau:
timer.enabled!=timer.enabled;
Theo mình là như vậy.

llvllrSi
21-12-2010, 10:29 PM
nếu bạn dùng timertick thì dễ, bạn viết trong sự kiện mouseclick của đối tượng bạn click dòng code sau:
timer.enabled!=timer.enabled;
Theo mình là như vậy.
Bạn nói nghe có vẻ hay hay nhưng hình như lệnh đấy không tồn tại (:=(|)
theo ý mình thì code thế này :

void Label1Click(object sender, EventArgs e)
{
if(timer1.Enabled == true )

timer1.Enabled = false;
else
timer1.Enabled = true;
}

yuchi_1k91
22-12-2010, 11:02 AM
Mình cũng có 1 vài Demo chữ chạy, SHARE cho các bạn cùng tham khảo
1.
http://i894.photobucket.com/albums/ac145/yuchi_bkap/ALL_WINFORM/Run-Letter2.png
2.
http://i894.photobucket.com/albums/ac145/yuchi_bkap/ALL_WINFORM/Run-Letter3.png
3.
http://i894.photobucket.com/albums/ac145/yuchi_bkap/ALL_WINFORM/Run-Letter4.png
Tất cả Project mình đã đính kèm!

gorkiit
22-06-2011, 08:16 PM
Bạn nói nghe có vẻ hay hay nhưng hình như lệnh đấy không tồn tại (:=(|)
theo ý mình thì code thế này :

void Label1Click(object sender, EventArgs e)
{
if(timer1.Enabled == true )

timer1.Enabled = false;
else
timer1.Enabled = true;
}


Em xin góp thêm dòng code này

private void label1_MouseHover(object sender, EventArgs e)
{
if (timer1.Enabled == true)
{
timer1.Enabled = false;
}
else
{
timer1.Enabled = true;
}
}

manh.dinh90
09-06-2012, 06:55 PM
Tạo dòng chữ chạy trên Winform như hình mẫu:

http://files.myopera.com/hongocnet/albums/265813/IMG9CW4EHROW0.jpg


Bước 1: tạo 1 label1. Ghi gì vào đó tùy bạn, ở đây tôi ghi là Je t'aime
Bước 2: tạo 1 timer1 và thiết lập các giá trị cho nó như sau
+ Enabled = true (cái này rất quan trọng nè)
+ cho Invertal =1000( giá trị bao nhiêu tùy bạn)
Bước 3: Click double vào timer1 và nhập vào : label1.Left += 10;

private void timer1_Tick(object sender, EventArgs e)
{
label1.Left += 10;// Left là chạy từ bên trái. Bạn có thể thay = right
}

Như vậy thì chạy làm sao chứ ???

manh.dinh90
09-06-2012, 07:12 PM
Mình cũng có 1 vài Demo chữ chạy, SHARE cho các bạn cùng tham khảo
1.
http://i894.photobucket.com/albums/ac145/yuchi_bkap/ALL_WINFORM/Run-Letter2.png
2.
http://i894.photobucket.com/albums/ac145/yuchi_bkap/ALL_WINFORM/Run-Letter3.png
3.
http://i894.photobucket.com/albums/ac145/yuchi_bkap/ALL_WINFORM/Run-Letter4.png
Tất cả Project mình đã đính kèm!

Thanks nhìu nhé !!!