電子書籍の厳選無料作品が豊富!

public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}

private void Form2_Load(object sender, EventArgs e)
{
//Graphics grfx = CreateGraphics();

}

private void Form2_Paint(object sender, PaintEventArgs e)
{
Form2 form2;
form2.Paint += new PaintEventHandler(PaintHandler1);

}
static void PaintHandler1(object objSender,PaintEventArgs e)
{
Graphics grfx = e.Graphics;
grfx.DrawString("test",Font font,Brushes.Black,0,0);//←ここでエラー
}
}

このように書くと「引数を2個指定できる、メソッド DrawString のオーバーロードはありません」

というエラーがでてフォームに文字を表示できません

最初に「空のプロジェクト」で作れば普通にDrawStringで文字を表示できるのですが
「Windowsフォーム」を選んでからだと表示できないのはなぜでしょうか?
何がいけないのでしょう。

A 回答 (2件)

> Fontは確かエイリアスだったような


何を言っているのかよくわかりませんが……。


以下のような、与えられた数値の2乗を返すメソッドがあったとします。
double Pow(double d){
 return d*d;
}

これを呼び出すときはどう書きますか?
Pow(double d)と書きますか?

この回答への補足

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/ …

から初期化されないから?とか

そもそもform2はクラスなのに変数って?
という疑問が・・・

補足日時:2014/01/25 20:56
    • good
    • 0
この回答へのお礼

あ、
picosoftさん以前は失礼なこと書いてすいませんでした
こんな簡単なミスに答えてくれる方を私は必要としています
部屋に帰ったらさっそく試してみます

お礼日時:2014/01/25 18:25

> grfx.DrawString("test",Font font,Brushes.Black,0,0);//←ここでエラー


第2引数が文法的におかしいですが……。

この回答への補足

えーと Fontは確かエイリアスだったような
少しヒントを下さい

補足日時:2014/01/25 13:22
    • good
    • 0
この回答へのお礼

えーと どうもPaintイベントとPaintHandler1という
2つがあるのがおかしいのかPaintイベント内にPaintHandler1の
中の処理を書いてPaintHandler1を削除したら動きました。

もっと勉強したいと思います。Picosoftさんありがとうございました。

お礼日時:2014/01/25 21:34

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