2014-02-09 52 views
1

命名ShapeContainer我儘量讓這畫網絡圖 的應用程序,我在形式和成動態創建ShapeContainer帆布此面板中使用的面板。如何運行

在該帆布我創建一些形狀和動態線路

(用於創建這些形狀我使用兩種方法)

爲線形:

private void CreateLine(int StartX,int StartY,int EndX,int EndY,Color lineColor,String ControlName) 
    { 

     LineShape newline = new LineShape(); 
     canvas.Parent = panMap; 
     newline.Parent = canvas; 
     newline.StartPoint = new Point(StartX+ZoomScale , StartY+ZoomScale); 
     newline.EndPoint = new Point(EndX + ZoomScale, EndY + ZoomScale); 
     newline.BorderColor = lineColor; 
     newline.BorderWidth = 2; 
     newline.BorderStyle = System.Drawing.Drawing2D.DashStyle.Solid; 
     newline.Name = "Link_" + ControlName; 
     newline.Tag = "Link_" + ControlName; 
     newline.BringToFront(); 
     canvas.Shapes.Add(newline); 


    } 

和用於創建矩形i使這種方法:

private void CreateBox(int X, int Y, int ObjectType) 
    { 
     ShapeContainer canvas = new ShapeContainer(); 
     RectangleShape box = new RectangleShape(); 
     box.Parent = canvas; 
     box.Size = new System.Drawing.Size(100, 90); 
     box.Location = new System.Drawing.Point(X, Y); 
     box.Name = "Box" + ObjectType.ToString(); 
     box.BackColor = Color.Transparent; 
     box.BorderColor = Color.Transparent; 
     box.BackgroundImage = img.Images[ObjectType]; 
     box.BackgroundImageLayout = ImageLayout.Stretch; 
     box.BorderWidth = 0; 


    } 

我稱這些方法是這樣的:

 CreateBox(600, 160, 4); 
     CreateBox(600, 200, 3); 

     CreateLine(75, 83, 227, 176, Color.Green, "1"); 
     CreateLine(227, 176, 367, 95, Color.Green, "2"); 

----現在,我有一些問題:1。 如何爲這個形狀(在其他方法使用)設定的名字嗎? 例如在TextBox控件我用這個:

TextBox txtbx = (TextBox)Controls["txtCityName"]; 

我能爲造型嗎?

  1. 如何爲此形狀創建方法?例如: :

    newline.Click + = newliclick(object sender,EventArgs event,Color linecolor)!?

我想發送超過1個對象方法

原諒我長的問題,對不起,如果我無法描述我的問題(我的英語不好)。

回答

1

這是可能的,但不是那樣的。你的方法簽名應該與事件處理程序匹配。你可以通過從EventArgs繼承創建一個類,但在這種情況下似乎沒有必要。

總之,只要定義事件處理程序,並做你的工作方法的另一種方法是把你的點擊事件的Color parameter.Inside打電話給你的另一種方法,並通過Color parameter.For例如:

newline.Click += newlineClick; 

private void newlineClick(object sender, EventArgs e) 
{ 
    newlineClickImpl(sender,e, Color.Blue); 
} 

private void newlineClickImpl(object sender, EventArgs e,Color color) 
{ 
    ... 
} 
+1

它工作,TNX這麼多朋友。 – user3290286

+0

它的工作,TNX。但我需要發送名稱或索引的換行方法。如果我想顯示換行符名稱,標籤或索引,請告訴我需要什麼代碼。 (在形式負載呼叫CreateLine()或CreateBox(再次)的幾個時間。TNX。 – user3290286