作者 主題: 求助c# 跑馬燈  (閱讀 4966 次)

0 會員 與 1 訪客 正在閱讀本文。

夢無痕

  • 懷疑的國中生
  • **
  • 文章數: 50
    • 檢視個人資料
    • 阿榮哥的人~蔘~
求助c# 跑馬燈
« 於: 2010-06-02 17:54 »
想用c#寫個跑馬燈
按下button時
lable會跑道視窗的最右邊然後又跑道視窗的最左邊  一直來回
小弟不才只能寫到讓lable右邊跑  不知如何讓他不斷的 跑完右邊後再往左邊跑 
請教高手賜教
代碼: [選擇]
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
    {
       
        public int s = 20 ;
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {

               timer1.Enabled = true;
             
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
        if(label1.Location.X<500)   
                label1.Location = new Point(label1.Location.X + s, label1.Location.Y);

        }
       
    }
}
« 上次編輯: 2010-06-02 18:01 由 夢無痕 »
~人逢順境不逞強,身處逆境不示弱~
小弟的部落格- http://a-rong-go.blogspot.com/

洋蔥叔叔

  • 區域板主
  • 鑽研的研究生
  • *****
  • 文章數: 830
    • 檢視個人資料
    • 洋蔥叔叔的隨意漫談電腦、網路、.NET、軟體本地化、雜七雜八
回覆: 求助c# 跑馬燈
« 回覆 #1 於: 2010-06-04 15:50 »
應該這樣吧,s 為移動的距離,label1 的 X 如果小於等於 0 (碰到最左邊) 或者 X 加上自己的長度大於等於加上表單的寬度(碰到最右邊)的時候,把 s 正負顛倒。

代碼: [選擇]
        private void timer1_Tick(object sender, EventArgs e)
        {
            if (label1.Left <= 0 || (label1.Left + label1.Width) >= this.Width)
            {
                s = 0 - s;           
            }
            label1.Left += s;
        }

夢無痕

  • 懷疑的國中生
  • **
  • 文章數: 50
    • 檢視個人資料
    • 阿榮哥的人~蔘~
回覆: 求助c# 跑馬燈
« 回覆 #2 於: 2010-06-05 22:24 »
大大好強喔
過然夠精簡
小弟腦袋不靈活只能想到以下方法
代碼: [選擇]
private void timer1_Tick(object sender, EventArgs e)
        {
            if (S == 0)
            {
                if (label1.Location.X < 700)
                {
                    label1.Location = new Point(label1.Location.X + s, label1.Location.Y);
                }
                else
                {
                    S = S + 1;
                }
            }
            else
            {
                if (label1.Location.X > 0)
                {
                    label1.Location = new Point(label1.Location.X - s, label1.Location.Y);
                }
                else
                {
                    S = S - 1;
                }

            }

        }
~人逢順境不逞強,身處逆境不示弱~
小弟的部落格- http://a-rong-go.blogspot.com/