亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

難道要做100個窗體出來?

難道要做100個窗體出來?

元芳怎么了 2018-10-17 05:06:52
我用C#做了一個Winform的軟件,這個軟件是這樣的:假如有兩張圖,每一張圖上分別劃分了很多不同的區域(兩上圖上的區域是不一樣的),我點擊不同的區域,就給出不同的提示信息(我用了tooltip控件實現),這些信息是通過都是通過數據庫讀取的。我實現的方法是:在每一張圖上的不同區域放上一個Button,然后把這個button透明化,不讓它遮擋住后面的圖片內容,當單擊的時候響應這個事件就可以了。但是,由于是兩張圖,那就需要有兩上窗體,一個Form1和一個Form2,每個窗體上放上N多的Button,而且這個button的事件基本上一模一樣,雖然現在做成功了,但是我覺得這個軟件的擴展性非常的差。我現在的問題就是:如果現在需要在原基礎上加兩張圖,難道又要重做?做出四個窗體出來?既然這些Button的事件是一樣的,能不能簡化一下?怎么才能實現,即使有100張圖,每張圖的區域都不同,但是我只需要一個窗體就能實現?就是只在一個窗體上顯示一張圖,當這張圖我看完了,點擊“下一個”就可以自動進入下一張圖呢?(由于每一張圖的區域是不同的,所以不能確定每一張圖上button的位置,那該如何實現呢?)
查看完整描述

1 回答

?
胡子哥哥

TA貢獻1825條經驗 獲得超6個贊

只需要一個窗體,如自定義一個PictureForm,每次都初始化這樣一個PictureForm,包含一個Button列表,每顯示一個新的圖片時設置每個Button的Location:

   class PictureForm : Form
   {
       public List<Button> Buttons { get; set; }
       //...
   }

   class MainForm : Form
   {
       private PictureForm pictureForm;

       private void btnNext_Click(object sender, EventArgs e)
       {
           if (pictureForm == null)
           {
               pictureForm = new PictureForm();
               Button b = new Button();
               b.Location = ...;
               pictureForm.Buttons.Add(b);
               // add other buttons
               // ...
               pictureForm.ShowDialog();
           }
           else
           {
               // add buttons
               // ...
               pictureForm.ShowDialog();
           }
       }
   }

 

如果要同時顯示多個圖片,也很容易,只要設置多個PictureForm即可


查看完整回答
反對 回復 2018-10-25
  • 1 回答
  • 0 關注
  • 404 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號