簡體   English   中英

C#Windows窗體管理多個圖像可見性

[英]C# windows form manage multiple image visibility

在此處輸入圖片說明

我有車輛可能位置的地圖。 我想在該圖片的頂部顯示一個類似黑點的圖像,以顯示每時每刻的位置。 我看到的唯一方法是在地圖上每個可能放置的位置上顯示一個定位圖像,然后一個個更新:

pic_position_r1.Visible = false;
pic_position_r2.Visible = false;
pic_position_r3.Visible = false;
...
pic_position_g1.Visible = false;
...
pic_position_b1.Visible = false;
...

switch (position)
    {
        case "R1": pic_position_r1.Visible = true; break;
        case "R2": pic_position_r2.Visible = true; break;
        ...
        case "G1": pic_position_g1.Visible = true; break;
        ...
        case "B1": pic_position_b1.Visible = true; break;
        ...

    }

有沒有更有效的方法可以做到這一點?

您可以將控件存儲在數組中,並使用枚舉來方便訪問。

public enum foo
{
  r1,
  g2
}

public void urMom()
{
  PictureBox[] obj = new PictureBox[]
  {
      pic_position_r1,
      pic_position_g2
  };

  foreach(PictureBox b in obj)
    b.Visible = false;

  obj[Convert.ToInt32(foo.g2)].Visible = true;
}

我從套接字以字符串形式接收位置,有沒有更簡單的方法來更新圖像元素的可見性? 就像if(b.text ==“ R1”)b.visible = true else b.visible = false嗎?

只需使用Controls.Find()搜索相應的控件,如下所示:

string position = "R1"; // string from your socket
string ctlName = "pic_position_" + position.ToLower(); // build up control name from the received string
Control match = this.Controls.Find(ctlName, true).FirstOrDefault(); // find the control
if (match != null) // see if a match was found
{
    match.Visible = true;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM