C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: カーソルの継承について


(過去ログ 51 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■28314 / inTopicNo.1)  カーソルの継承について
  
□投稿者/ Yossi (8回)-(2008/11/24(Mon) 12:18:50)

分類:[C#] 

こんにちは

PictureBoxを複数作ってマウスがそれらの上に来たときに十字のカーソルに
したくて カーソルだけ継承?したクラスを作りたいのですが以下のように書くと

    class myPicBox : PictureBox
    {
        myPicBox.Cursor = System.Windows.Forms.Cursor.VSplit;
    }

エラー	6	無効なトークン '=' が クラス、構造体またはインターフェイスのメンバ宣言で使用されています。

となってしまいます。

どうすれば思ったことが実現できるでしょうか?
とてつもなく初心者の質問だと思いますがヒントでも教えていただけるとありがたいです。
よろしくお願いします。
Win XP pro + C# VS2005 Expressです。

引用返信 編集キー/
■28315 / inTopicNo.2)  Re[1]: カーソルの継承について
□投稿者/ Azulean (229回)-(2008/11/24(Mon) 12:55:28)
コンストラクタを書いて、そこでプロパティに設定するコードを書きましょう。
ただ、それだけだと、一度デザイナで配置してしまったコントロールには、そのクラスのコードを変えるだけでは追従しなくなります。
(Designer.csにCursor = VSplitみたいなコードが出力されるため)

ですので、CursorプロパティにDefaultValue属性をつけたり、Cursorプロパティを変えないように隠したりするのも手かもしれません。

■デフォルト値を変更する
public class CursorPictureBox : PictureBox
{
    // コンストラクタ
    public CursorPictureBox()
    {
        // Cursorのデフォルト値を入れておく
        Cursor = Cursors.VSplit;
    }

    // デフォルト値はVSplitであることを宣言しておく
    [System.ComponentModel.DefaultValue(typeof(Cursor), "VSplit")]
    // 属性をつけるためだけにoverrideであるため、あとはbaseに任せる
    public override Cursor Cursor
    {
        get { return base.Cursor; }
        set { base.Cursor = value; }
    }
}

■Cursorプロパティを見えなくする
public class CursorPictureBox : PictureBox
{
    // コンストラクタ
    public CursorPictureBox()
    {
        // Cursorのデフォルト値を入れておく
        Cursor = Cursors.VSplit;
    }

    // プロパティウィンドウで見えないようにする
    [System.ComponentModel.Browsable(false)]
    // Designer.cs等に出力されないようにする
    [System.ComponentModel.DesignerSerializationVisibility(System.ComponentModel.DesignerSerializationVisibility.Hidden)]
    // コードエディタのIntelliSenseで見えないようにする
    [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
    // 属性をつけるためだけにoverrideであるため、あとはbaseに任せる
    // 好みに合わせてsetアクセサで例外をスローするかどうか?
    public override Cursor Cursor
    {
        get { return base.Cursor; }
        set { base.Cursor = value; }
    }
}

※見えなくするだけで、実際には変更できる。

引用返信 編集キー/
■28316 / inTopicNo.3)  Re[2]: カーソルの継承について
□投稿者/ Azulean (230回)-(2008/11/24(Mon) 12:56:40)
よく考えたら、VSplitでいいのかな?
CrossやSizeAllだったりしませんか?
引用返信 編集キー/
■28318 / inTopicNo.4)  Re[3]: カーソルの継承について
□投稿者/ Yossi (9回)-(2008/11/24(Mon) 13:35:51)
Yossi さんの Web サイト
No28316 (Azulean さん) に返信
> よく考えたら、VSplitでいいのかな?
> CrossやSizeAllだったりしませんか?

教えて頂いたコードを参考にして修正したら思った動作になりました。
仰るとおり 欲しかった形は Cross でした(汗

Azulean さん ありがとうございました。


もう一点、あつかましくすみません、今回教えて頂いた
以下のような [ ] で括るのは何と呼ぶのでしょうか?
或いはどこか初心者向けに説明してるページなどがありますか?

> // デフォルト値はVSplitであることを宣言しておく
> [System.ComponentModel.DefaultValue(typeof(Cursor), "VSplit")]

調べて、後々使えるようにしておきたいと思いました。


解決済み
引用返信 編集キー/
■28324 / inTopicNo.5)  Re[4]: カーソルの継承について
□投稿者/ Azulean (231回)-(2008/11/24(Mon) 16:18:59)
2008/11/24(Mon) 16:19:22 編集(投稿者)

> もう一点、あつかましくすみません、今回教えて頂いた
> 以下のような [ ] で括るのは何と呼ぶのでしょうか?
> 或いはどこか初心者向けに説明してるページなどがありますか?
属性ですね。
初心者向けに説明しているページなどは申し訳ありませんが、心当たりがありません。

MSDNでのページは下記にあたります。
http://msdn.microsoft.com/ja-jp/library/z0w1kczw.aspx


> 調べて、後々使えるようにしておきたいと思いました。
.NET Frameworkの標準で存在する属性でも結構な種類があり、それを1つのページにまとめて説明しているページはないかもしれません。


※解決済みつけ忘れにつき、編集。
解決済み
引用返信 編集キー/
■28329 / inTopicNo.6)  Re[5]: カーソルの継承について
□投稿者/ Yossi (10回)-(2008/11/24(Mon) 16:56:59)
Yossi さんの Web サイト
No28324 (Azulean さん) に返信
> 2008/11/24(Mon) 16:19:22 編集(投稿者)
>
> MSDNでのページは下記にあたります。
> http://msdn.microsoft.com/ja-jp/library/z0w1kczw.aspx
>
>
>>調べて、後々使えるようにしておきたいと思いました。
> .NET Frameworkの標準で存在する属性でも結構な種類があり、それを1つのページにまとめて説明しているページはないかもしれません。

属性という言葉がわかっただけでも手がかりになりそうです。
重ね重ねありがとうございます。m(_ _)m


解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -