none
新增一個會自己移動的picturebox以及時間到了才能使用的控制項 RRS feed

  • 問題

  • 我想要在按下去button1以後,會出現一個picturebox在(205,262)
    picturebox走到指定座標(205,562)就會停。
    每按一次就會多增加一個,都在同一個位置出現,同一個位置停下。
    另外button1需要五秒後才能使用。

    我自己有些想法,我會新增picturebox,但我不知道怎麼讓他動(每秒座標往右10)...
    PictureBox pic = new PictureBox();
    比較讓我困惑的是,我是要在按下去picturebox以後才會出現一個新的picturebox,
    但打在button1_click裡面的程式碼我不知道如何才能共用,

       private void button1_Click(object sender, EventArgs e)
            {
                PictureBox pic = new PictureBox();
                pic.Left = 50;
                pic.Top = 262;
                pic.Height = 50;
                pic.Width = 50;
                pic.Image = Image.FromFile("C:\\abc.jpg");
                pic.BackColor = Color.Transparent;
                this.Controls.Add(pic);
            }

    例如說這樣,但我要在timer1_tick裡面也使用pic的話應該如何做呢?
    例如我在timer1_tick裡面打pic.Left += 50; 的話這樣就能讓他動了,
    但重點是我只知道打在

      public partial class Form1 : Form
        {

    這個位置才能共用,如果打在button1裡面"pic"該如何共用呢?
    另外五秒控制項才能啟用又該如何打?
    以上問題麻煩了 :(

    2013年3月7日 下午 12:00

解答

所有回覆

  • 這樣就可以共用:

    PictureBox pic =null;

    private void button1_Click(object sender, EventArgs e)
    {
                pic = new PictureBox();

    }

    5秒後啟用控制項可以在一開始將PictureBox的Eabled屬性設定為False, 於timer1_tick計算時間, 5秒到則將PictureBox的Eabled屬性設定為True

    2013年3月7日 下午 12:06
  • 謝謝你!!!!!!!
    請問你是如何學到這語法的,我想學語法都不知道從哪兒找...
    應該說,我需要的語法,不知道名稱就不知道該從何下手,
    就像是,你不知道迴圈是for,甚至不知道那叫迴圈,你只知道你要的功能是重複運作...
    這根本像大海撈針般困難,想找都不知道怎麼找...
    2013年3月7日 下午 01:08
  • 可是這樣還有個問題...
     public partial class Form1 : Form
        {
            const int pictureBoxWidth = 25;
            const int pictureBoxHeight = 25;
            PictureBox pic = null;
           
            public Form1()
            {
                InitializeComponent();
               

            }

            private void button1_Click(object sender, EventArgs e)
            {

                timer1.Enabled = true;
                timer1.Interval =500;
                pic = new PictureBox();
                pic.Left = 230;
                pic.Top = 262;
                pic.Height = pictureBoxHeight;
                pic.Width = pictureBoxWidth;
                pic.Image = Image.FromFile("C:\\abc.jpg");
                pic.BackColor = Color.Transparent;
                this.Controls.Add(pic);
               
            }

            private void timer1_Tick(object sender, EventArgs e)
            {
                pic.Left += 10;
            }

        }

    但我如果在按button1,
    原先的pic就會停止...
    我要的是他會一直走,
    走到指定座標才能停止。
    請問這樣要改哪裡??
    2013年3月7日 下午 01:13
  • 用集合或陣列.

    至於語法怎麼學? 其實都是要把最基礎的知識學的紮實, 自然就會運用自如.

    有空的話, 參考一下以下文章, 有很多關於基本功的連結

    對初心者有助益的 MSDN 文件庫索引整理 (二)


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2013年3月7日 下午 01:34
    版主
  • 能否幫我把我寫不出來的部分寫出來...
    上面有程式碼,也有我卡住的地方...
    我認為這樣我能學得更快更好。
    也謝謝你PO的連結對初心者有助益的 MSDN 文件庫索引整理 (二)

    2013年3月8日 上午 10:52
  • 因為按button1會重新建立PictureBox物件, 所以您可以在button1被按下之後將button1物件的Enabled屬性設定為True, 讓使用者不能按第二次
    2013年3月8日 上午 11:30
  • 但是我是要能按第二次....
    我要做一個守城遊戲,然後picturebox1是小兵...
    所以我每按一次就要出現一隻小兵,遇到小兵會停止,或遇到他家會停止...
    所以不能"讓使用者不能按第二次"...
    請問有辦法做到我要的功能嗎??
    2013年3月8日 下午 02:56
  • 那您就要有兩個或多個變數, 代表不同的小兵, 不能只用一個picturebox1變數
    2013年3月9日 下午 12:19
  • 一個按鈕代表一個"種類"的小兵,
    可是,我用新增picturebox的方法來製造出小兵,但用您的方法後,可以製造出很多小兵,
    如果先按一下button,第一隻小兵的確會走到指定位置才停,但是如果我又按第二隻小兵的話,第一隻小兵就會停止了...
    但如果我宣告出一堆變數,例如我這次是宣告--------> PictureBox pic = null;
    如果照你的說法,我要召喚出1000隻小兵豈不是要1000個變數了...
    應該有比較簡單的方法能達成這要求?

    要求是,我每按一次button會出現一隻小兵,小兵會走到指定位置(城門前)或走到敵隊小兵前,就停止。
    如果我一次點五下button就會有五隻小兵走到
    指定位置(城門前)或走到敵隊小兵前,就停止。
    能有什麼方法嗎...

    2013年3月12日 下午 12:12
  • 用可以管理1000個小兵的陣列
    2013年3月12日 下午 01:13
  • 一個按鈕代表一個"種類"的小兵,
    可是,我用新增picturebox的方法來製造出小兵,但用您的方法後,可以製造出很多小兵,
    如果先按一下button,第一隻小兵的確會走到指定位置才停,但是如果我又按第二隻小兵的話,第一隻小兵就會停止了...
    但如果我宣告出一堆變數,例如我這次是宣告--------> PictureBox pic = null;
    如果照你的說法,我要召喚出1000隻小兵豈不是要1000個變數了...
    應該有比較簡單的方法能達成這要求?

    要求是,我每按一次button會出現一隻小兵,小兵會走到指定位置(城門前)或走到敵隊小兵前,就停止。
    如果我一次點五下button就會有五隻小兵走到
    指定位置(城門前)或走到敵隊小兵前,就停止。
    能有什麼方法嗎...


    我前面講過的集合或陣列.

    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2013年3月12日 下午 01:40
    版主
  • 不知道迴圈是for,甚至不知道那叫迴圈,你只知道你要的功能是重複運作

    這東西您去書局隨便找一本書應該都有談到 ,會比您在片段的問學的更多


    軟體開發領域裡區區一個迷途工程師
    MyBlog: http://www.dotblogs.com.tw/ian/
    開發ASP.NET您要瞭解的基楚

    2013年3月12日 下午 02:37
  • TO NO.18 我是打比方,很多語法我都還不會,我只知道我需要那樣的功能,而不知道"擁有那樣功能的語法"的名稱。

    TO Bill Chung 如果您有一點點時間,能否做個簡單的例子給我作個參考,陣列我想過,但不太會實現我要的要求...
    2013年3月13日 下午 12:12
  • 所以你應該去一趟書局
    買一本"適合你" 的介紹C# 的書
    如果有經濟上的考量
    亦可以到圖書館借一本


    以下為簽名檔,如果你愛拉椅子坐那就是你的問題。
    先查MSDN文件庫
    再用GOOGLE搜尋
    才到論壇來發問

    這是論壇不是技術支援中心
    沒有人得無償解答你的問題

    在標題或文章註明很急
    不會增加網友回覆速度

    2013年3月13日 下午 03:25
  • 2013年3月14日 上午 03:36