我正嘗試在雙擊文本框中創建一個橢圓。但它似乎並沒有發生。無法在鼠標雙擊事件上創建橢圓
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.x
和e.y
似乎是給從發送方相對座標。如何獲得相對於表單的點。
__NEVER__使用'Graphics g = CreateGraphics();'將點添加到列表並編寫Paint事件以使用其e.Graphics事件在所有這些點處繪製橢圓。在列表中添加一個點後,在要繪製的控件上調用Invalidate。另外:如果你想繪製它們,'TextBoxes'不是很開心;你可以看到__他們甚至沒有Paint事件!! __更好地使用Panel,或者如果你想要它上面的文本和標籤。 (順便說一句:標籤大大被低估) –
TaW
你可以詳細說明如何調用繪畫事件。每次用戶雙擊面板時,我都需要調用它。 –
如果您想要使用面板(或標籤),只需雙擊面板的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