C#:カスタムコントロールの作成について

[戻る]
らる 2009/06/11(木) 00:54:47
お世話になります。
VS2008のC#でカスタムコントロールを作ろうとして困っています。現在以下のサイトを
参考にしています。
〜 10 行でズバリ!! - 番外編 〜 自分流のコントールを作っちゃおう 〜
http://msdn.microsoft.com/ja-jp/events/dd277911.aspx

やりたいのは独自のプロパティを追加したボタンやラベルを作りたいので、まさに上記
のURLの内容だとは思うのですが。コンパイルをかけると以下のようなエラーが出てしま
います。

<エラー内容>
'ButtonEx.ButtonEx'に'AutoScaleMode'の定義が含まれておらず
型'ButtonEx.ButtonEx'の最初の引数を受け付ける拡張メソッドが見つかりませんでし
た。usingディレクティブまたはアセンブリ参照が不足しています。

<発生場所>
buttonEx.Designer.cs

<該当箇所>
private void InitializeComponent()
{
components = new System.ComponentModel.Container();
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
}

<やったこと>
1.プロジェクト新規作成でWindowsフォームコントロールライブラリ
  を選択して、プロジェクト名ButtonExで作成
2.ソリューションエクスプローラからUserControl1.csを削除
3.プロジェクトメニューの新しい項目の追加でユーザーコントロール
  (WPFじゃないほう)を選択し、ファイル名、ButtonEx.csで作成する。
4.ソースコードの一部変更
public partial class ButtonEx : UserControl
     ↓
public partial class ButtonEx : System.Windows.Forms.Button

5.コンパイルする。
ーーーーーーーーーーーーーーーーーーーーーーー
途中の手順(ひな形種別の間違い?)に何かミスとかあるのかなぁと
想像しているのですが。
いろいろとサイトを探してみたのですが、よくわからずこちらで質問
させていただきました。
どなたかご教示のほど、よろしくお願いしますm(__)m。

aetos 2009/06/11(木) 10:47:02
この内容であれば、そのエラーが発生している行を削除するだけでよいかと。

または、変更するなと書いてあるコードを変更するのが気持ち悪ければ、buttonEx を一
旦削除し、再度追加する際に、テンプレートとして「ユーザー コントロール」ではなく
「カスタム コントロール」を選んでもよいでしょう。

aetos 2009/06/11(木) 10:55:01
肝心なことに答えてなかったかな。

手順通りにやって同じエラーが出ることは確認しました。
で、原因ですが…そのサンプルのページの上部を見ると、「Visual Studio .NET 2003 
版」と書いてありますね。
同じ手順を 2003 で踏むと、AutoScaleMode を設定する問題の行が自動的に書き込まれ
ることはないのです(と言うより、2003(.NET Framework 1.1)には AutoScaleMode と
いうプロパティが存在しません)。

まぁ、開発ツールのバージョンが2世代違うので、特に IDE の操作や自動生成されるコ
ードについては、サンプル通りにならないことがあるかと思います。
そこは適宜読み替えて対処していくしかないでしょうね。

もし、どうしてもサンプル通りにやりたいなら、Visual Studio .NET 2003 を手に入れ
るしかないですが…2003 には Express Edition がないので、相当難しいと思います
よ。

らる 2009/06/12(金) 11:37:10
[[解決]]
aetos 様
お世話になります。
カスタムコントロールを選択することで解決できました。
どうもありがとうございました。

古いスレッドには追加発言できません。