2016-05-12 61 views
1

我正嘗試在雙擊文本框中創建一個橢圓。但它似乎並沒有發生。無法在鼠標雙擊事件上創建橢圓

panel.MouseClick += create_terms; 

private void create_terms(object sender, EventArgs arg) 
{ 
    if (Phys_terms_check.Checked == true) 
    { 
     MouseEventArgs e = (MouseEventArgs)arg; 
      Graphics g = CreateGraphics(); 
      SolidBrush p = new SolidBrush(Color.Red); 
      Pen erase = new Pen(Color.White); 

      Panel panel = (Panel)sender; 
      g.FillEllipse(p, e.X+panel.Left,e.Y+panel.Top,10,10); 
    } 
} 

e.xe.y似乎是給從發送方相對座標。如何獲得相對於表單的點。

+1

__NEVER__使用'Graphics g = CreateGraphics();'將點添加到列表並編寫Paint事件以使用其e.Graphics事件在所有這些點處繪製橢圓。在列表中添加一個點後,在要繪製的控件上調用Invalidate。另外:如果你想繪製它們,'TextBoxes'不是很開心;你可以看到__他們甚至沒有Paint事件!! __更好地使用Panel,或者如果你想要它上面的文本和標籤。 (順便說一句:標籤大大被低估) – TaW

+0

你可以詳細說明如何調用繪畫事件。每次用戶雙擊面板時,我都需要調用它。 –

+0

如果您想要使用面板(或標籤),只需雙擊面板的Propertybox-Events-Pane中的Paint事件!對於[掛鉤事件](http://stackoverflow.com/questions/33275763/copy-datagridview-values-to-textbox/33276161?s=2|0.3896#33276161)閱讀此。對於繪製橢圓列表[見這篇文章](http://stackoverflow.com/questions/36924016/how-to-draw-multiple-ellipse-in-the-same-panel/36924235#36924235) - 一個更多的評論: 'Graphics g = CreateGraphics();'創建了一個Graphics對象,你可以只用它來繪製__non-persistent graphics__到__Form__上 – TaW

回答

0

添加發件人的頂部和左側座標。

g.FillEllipse(p, e.X + textbox.Left, e.Y + textbox.Top, 10, 10); 

但是,這不會顯示,因爲文本框繪畫事件填充火和重新繪製文本框。

0

首先:TextBoxes是舊的傳統和相當特殊的控件,不支持所有事情,正常控制讓你這樣做。

在這是行不通的事情

  • 設置一個的BackgroundImage
  • 所有者把他們拉

後者包括在其Paint/OnPaint事件的任何圖紙。

可以代碼和鉤了Paint事件,但它不會叫

您仍然可以繪製到使用CreateGraphics一個TextBox,如果您使用此功能做是正確的,但一如既往的結果是非持久和系統刷新TextBox本身會很快消失,這是超級快:只要您將光標移到它你畫可能會消失圓..

做到這一點就必須類似於這樣的代碼:

Graphics g = yourTextBox.CreateGraphics(); 
g.FillEllipse(Brushes.Red, yourTextBox.Width - 22, 2, 11, 11); 

但正如我所說,這不會持續下去,所以它幾乎沒有或沒有價值。

如果要繪製到的東西用可見Text屬性,你可以使用一個Label

private void yourLabel_Paint(object sender, PaintEventArgs e) 
{ 
    e.Graphics.FillEllipse(Brushes.Red, yourLabel.Width - 22, 2, 11, 11); 
} 

enter image description hereenter image description here

結果看起來是一樣的,但只在Label點堅持,例如一個最小化 - 最大化的形式..事實上,在TextBox點甚至沒有生存的電話我的屏幕截圖程序,所以我使用訴諸按Print-Key

對於drawing circles upon mouseclicks onto normal controls see this post