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

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

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

Re[7]: デザイナ画面で継承元フォームのボタンのEnabledを変…


(過去ログ 12 を表示中)

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

■3174 / inTopicNo.1)  デザイナ画面で継承元フォームのボタンのEnabledを変…
  
□投稿者/ たけちゃんマン (1回)-(2007/04/25(Wed) 11:24:13)

分類:[.NET 全般] 

【開発環境】XPPro; VS2005; C#

お世話になります。
ベースとなるフォームにボタン(button1)を貼り付けて、
buttun1Eanbledプロパティを追加し、button1のEnabledを取得、設定するゲッターセッターを書きました。

public bool button1Enabled
{
    get
    {
        return this.button1.Enabled;
    }
    set
    {
        this.button1.Enabled = value;
    }
}

これを共通のdllにしたうえで、別画面でdllを参照してベースフォームを継承し、
デザイナ画面でbutton1Enabledプロパティを変更しようとするのですが、falseにしても強制的にtrueになってしまいます。
VS2003では同様のコードで変更が効くので、???状態です。

他のプロパティで試してみると、
TextプロパティやBackColorプロパティはVS2005でも変更できました。
visibleプロパティを同様に変更した場合、デザイナ画面でFalseに設定しても、Initialize部分に変更が反映されませんでした。

原因がお解りの方がおられましたら教えていただけないでしょうか。
よろしくお願いします。





引用返信 編集キー/
■3207 / inTopicNo.2)  Re[1]: デザイナ画面で継承元フォームのボタンのEnabledを変…
□投稿者/ おがわさん (1回)-(2007/04/25(Wed) 18:24:25)
下記のソースがなければ、原因を調べるには難しいと思われます。

・ベースとなるフォーム
・ベースとなるフォームを継承したフォーム

まずは、ソースも投稿してみてはいかがでしょうか?


引用返信 編集キー/
■3219 / inTopicNo.3)  Re[2]: デザイナ画面で継承元フォームのボタンのEnabledを変…
□投稿者/ たけちゃんマン (2回)-(2007/04/26(Thu) 09:12:08)
No3207 (おがわさん さん) に返信
> 下記のソースがなければ、原因を調べるには難しいと思われます。
> 
> ・ベースとなるフォーム
> ・ベースとなるフォームを継承したフォーム
> 
> まずは、ソースも投稿してみてはいかがでしょうか?
> 
> 

お世話になっております、

〜継承元〜
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace BaseForm
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        public bool button1Enabled
        {
            get
            {
                return this.button1.Enabled;
            }
            set
            {
                this.button1.Enabled = value;
            }
        }
    }
}

〜継承先〜
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using BaseForm;

namespace Form1
{
    public partial class Form1 : BaseForm.Form1
    {
        public Form1()
        {
            InitializeComponent();
        }
    }
}

こんな感じですが
継承先のデザイナ画面でbutton1Enabledプロパティは見れるのですが、
falseに設定できません。
また、button1Visibleの場合、デザイナ画面上はfalseを設定できるのですが、
Form1のInitializeComponent()内に記述されません。

引用返信 編集キー/
■3223 / inTopicNo.4)  Re[3]: デザイナ画面で継承元フォームのボタンのEnabledを変…
□投稿者/ ぼのぼの (44回)-(2007/04/26(Thu) 12:03:22)
秘密はForm1.Designer.csの方にあります。
InitializeComponentメソッドの中に

    this.button1 = new System.Windows.Forms.Button();

というコードがありませんか?
つまり、デザイナ上で変更した時、button1はまだnullなのです。

試しに、Form1のコードを以下のようにすると、私の環境ではうまく動きました。

    private bool dummy = true;

    public bool button1Enabled
    {
        get
        {
            if (this.DesignMode) return dummy;
            else return this.button1.Enabled;
        }
        set
        {
            if (this.DesignMode) dummy = value;
            else this.button1.Enabled = value;
        }
    }

しかしもっとスマートな方法があるんじゃないかと思いつつも、
ちょっと思いつかないのでそれは他の識者の方に…(^^;

引用返信 編集キー/
■3226 / inTopicNo.5)  Re[4]: デザイナ画面で継承元フォームのボタンのEnabledを変…
□投稿者/ たけちゃんマン (3回)-(2007/04/26(Thu) 13:59:11)
No3223 (ぼのぼの さん) に返信

ありがとうございます。

> private bool dummy = true;
を利用して試したところ私の環境でもうまく動きました。


> つまり、デザイナ上で変更した時、button1はまだnullなのです。
そうですかぁ
でも、そうであれば全てのコントロールはnullでどのプロパティも変更できないような気がしてしまいます。
何故、同様に記述したbutton1Textやbutton1BackColorといったプロパティは変更できるのでしょうか(*_*)
引用返信 編集キー/
■3227 / inTopicNo.6)  Re[5]: デザイナ画面で継承元フォームのボタンのEnabledを変…
□投稿者/ ぼのぼの (45回)-(2007/04/26(Thu) 14:29:58)
No3226 (たけちゃんマン さん) に返信
> 何故、同様に記述したbutton1Textやbutton1BackColorといったプロパティは変更できるのでしょうか(*_*)

すみません、嘘を言ってしまったようです m(_ _)m
TextやBackColorが変更できるってことは、button1はnullじゃないですね。
原因は他にあるようです…
引用返信 編集キー/
■3230 / inTopicNo.7)  Re[6]: デザイナ画面で継承元フォームのボタンのEnabledを変…
□投稿者/ ぼのぼの (46回)-(2007/04/26(Thu) 15:10:08)
とりあえず、デザイナでの操作時のデバッグ方法を見つけました。
#こんなことができるなんて知らなかった…
http://msdn2.microsoft.com/ja-jp/library/5ytx0z24(VS.80).aspx

で、ちょっとデバッグしてみたところ、やはりbutton1はnullにはなっておらず、
例外が発生することもなく

    this.button1.Enabled = value;

のステップを通過します。

ところが、不思議なことに、確かにvalueはfalseになってるのに、
1ステップ実行した後にthis.button1.Enabledの値をヲチするとtrueになっている!

非常に不可解ですが、私の技量ではこれ以上はわからんとです…

引用返信 編集キー/
■3232 / inTopicNo.8)  Re[7]: デザイナ画面で継承元フォームのボタンのEnabledを変…
□投稿者/ たけちゃんマン (4回)-(2007/04/26(Thu) 16:34:19)
No3230 (ぼのぼの さん) に返信

試してくださってありがとうございます。

> とりあえず、デザイナでの操作時のデバッグ方法を見つけました。
> #こんなことができるなんて知らなかった…
> http://msdn2.microsoft.com/ja-jp/library/5ytx0z24(VS.80).aspx
私も知りませんでした。ありがとうございます。
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -