アプリ版:「スタンプのみでお礼する」機能のリリースについて

protected override void OnPaint(PaintEventArgs e)
{
~~省略~~
    e.Graphics.DrawString( "RPG", new Font( "MS 明朝", 150 ), d, 450, 50);
~~省略~~
  static void btnOnClick(object sender, EventArgs e)
 { ここにコード? }

表示されたRPGという文字をボタンが押されたときに削除したいです
ついでにボタンも削除したいです。

質問者からの補足コメント

  • Rereshって調べましたがもしかしてrefreshのことですか?

    No.1の回答に寄せられた補足コメントです。 補足日時:2018/06/27 20:08
  • 本当にC#初心者なのでよくわかりませんが
    Formに表示されてるものはすべて削除して真っ白な状態にしたいというわけです
    何度もすみません

    No.2の回答に寄せられた補足コメントです。 補足日時:2018/06/28 20:54

A 回答 (3件)

C#で、OnPaintを実装するとは、100年はやい!(笑)


初心者らしく、デザイナーで、formにコントロール配置して、イベントとりたいボタンをダブルクリックして、Visibleにfalseをセットしなさい。
それともこの方法は、なにか都合が悪いのかな。
    • good
    • 0

ああ、

https://oshiete.goo.ne.jp/qa/10579448.html はこれの続きだったのか


提示されたところから予想するに

背景だけのFormがあって
そのまま再描画したのでは、背景だけに戻ってしまうので、
OnPaintをOverridesすることで、画面が再描画されるタイミングで毎回その文字を書き直している

というもののように思います。

これを
・OnPaintを 「毎回文字を書く」から「表示したいときだけ文字を書く」に変更
 (プロパティに今どっちかを記憶させておく)
としておいて
・強制的に再描画させるために Refreshメソッドを実行
というのが、No.1に書いてある方法です。



ただ
そもそもOnPaintでのDrawStringが最適な方法なの?という疑問があります。

文字列を表示するだけならLabelコントールを配置する方がはるかに簡単です。
Visible=falseで非表示にできますし、Removeすることもできます。
OnPaintはもっと簡単になるし、おそらくOverrides自体が不要になります。
この回答への補足あり
    • good
    • 1

フォームの話だろうか?


Rereshして文字をえがかなければよいのでは?

ボタンの削除はControls.Removeでもなんでも
お好みの方法で。単に消したいならVisibleを設定しよう。
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!