ダブルクリックするとテキストボックスにエリプスを作成しようとしています。しかし、それは起こらないようです。マウスダブルクリックイベントで楕円を作成できません
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__グラフィックスg = CreateGraphics(); '代わりに、リストにポイントを追加し、そのe.Graphicsイベントを使用してこれらすべてのポイントで楕円を描画するPaintイベントをコーディングします。リスト呼び出しにポイントを追加した後、描画するコントロールで無効にします。また、 'TextBoxes'はあなたが描画したい場合、本当に幸せではありません。あなたはペイントイベントを持っていないという事実からそれを見ることができます!! __ Panelを使うのがいいですか、それともラベルの上にテキストを置いておきたいか分かります。 (Btw:ラベルはかなり過小評価されています) –
TaW
ペイントイベントの呼び出し方法を詳しく説明できますか?ユーザーがパネルでダブルクリックするたびにこれを呼び出す必要があります。 –
Panel(またはLabel)を使用する場合は、Panelの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) - もう1つの発言: 'Graphics g = CreateGraphics();'は__non-persistent graphics__を__Form__に描画するためだけに使用できるGraphicsオブジェクトを作成しました – TaW