- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C# フォームプログラミングで)
C# フォームプログラミングで文字を表示できないエラーの原因とは?
このQ&Aのポイント
- C# フォームプログラミングでフォームに文字を表示しようとすると、引数を2個指定できるメソッド DrawString のオーバーロードが存在しないというエラーが発生します。
- 空のプロジェクトでフォームを作成すると、普通に DrawString メソッドを使用して文字を表示することができます。
- しかし、Windows フォームを選択してからフォームを作成すると、DrawString メソッドで文字を表示することができなくなります。この原因は何なのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> Fontは確かエイリアスだったような 何を言っているのかよくわかりませんが……。 以下のような、与えられた数値の2乗を返すメソッドがあったとします。 double Pow(double d){ return d*d; } これを呼び出すときはどう書きますか? Pow(double d)と書きますか?
その他の回答 (1)
- Picosoft
- ベストアンサー率70% (274/391)
回答No.1
> grfx.DrawString("test",Font font,Brushes.Black,0,0);//←ここでエラー 第2引数が文法的におかしいですが……。
質問者
お礼
えーと どうもPaintイベントとPaintHandler1という 2つがあるのがおかしいのかPaintイベント内にPaintHandler1の 中の処理を書いてPaintHandler1を削除したら動きました。 もっと勉強したいと思います。Picosoftさんありがとうございました。
質問者
補足
えーと Fontは確かエイリアスだったような 少しヒントを下さい
お礼
あ、 picosoftさん以前は失礼なこと書いてすいませんでした こんな簡単なミスに答えてくれる方を私は必要としています 部屋に帰ったらさっそく試してみます
補足
Font font の実引数と仮引数が同じ、という問題は static void PaintHandler1(object objSender,PaintEventArgs e) { Form form = (Form)objSender; Graphics grfx = e.Graphics; grfx.DrawString("test",form.Font,Brushes.Black,0,0); } とこのようにしました。ホントはFormにキャストする以外ないのかなという疑問もあるのですが、、 そうしたら今度は private void Form2_Paint(object sender, PaintEventArgs e) { Form2 form2; form2.Paint += new PaintEventHandler(PaintHandler1); } という部分で「未割り当てのローカル変数form2が使用されました。」 というエラーが グローバルはどこに書いたらよいでしょう? ヘルプを見ると http://msdn.microsoft.com/ja-jp/library/vstudio/4y7h161d(v=vs.120).aspx から初期化されないから?とか そもそもform2はクラスなのに変数って? という疑問が・・・