[seasar-dotnet:1543] Re: [S2Windows.NET]Quillを使用してモーダレスフォームを表示

koyak [E-MAIL ADDRESS DELETED]
2010年 1月 13日 (水) 22:11:56 JST


uparrowさん

小谷です。

> Hideメソッドを用いて、開きたい分だけフォームのクラスを作ることで
> 実現できました。

良かったです!
System.ObjectDisposedExceptionには
私もハマりかけたことがあります。。。

2010年1月13日17:56  <[E-MAIL ADDRESS DELETED]>:
> 小谷さん
>
> uparrowです。
>
> ご回答ありがとうございました。
>
>> PjViewImageFormを閉じるときにどんな処理を呼んでいるでしょうか?
> Close()しておりました。
> 基本的なことを理解できておらず、反省です。
>
> Hideメソッドを用いて、開きたい分だけフォームのクラスを作ることで
> 実現できました。
> ありがとうございました。
>
>> Quillのインスタンスは一つの型につき一つまでのため、
>> 複数表示する場合は
>> ・画像ごとに別のフォームを用意する
>> ・QuillではなくS2Containerの方を使う(インスタンス管理はprototypeあど)
>>http://s2container.net.seasar.org/ja/dicontainer-reference.html#InstanceMode)
>> ・S2Windows.NETを使わずに通常の方法でフォームを表示させる
>> などの対策が必要かもしれません。
> 要件が複雑な場合はこちらの方法も検討してみたいと思います。
>
> よろしくお願いいたします。
>
>> uparrowさん
>>
>> 小谷です。
>>
>> PjViewImageFormを閉じるときにどんな処理を呼んでいるでしょうか?
>>
>> モーダレス(Show)でフォームを開いている場合、
>> 閉じるのにCloseメソッドをお使いになっているとリソースが解放され、
>> 再表示しようとするとSystem.ObjectDisposedExceptionとなるはずです。
>> http://msdn.microsoft.com/ja-jp/library/system.windows.forms.form.close.aspx
>>
>> Closeの代わりにHideメソッドやVisibleプロパティにfalseを設定する、
>> といった方法を試してみていただけないでしょうか。
>>
>> > 最終的には、メインの画面に複数のボタンを配置し、ボタンに関連する画像の
>> > フォームを複数表示したいと考えております。
>>
>> Quillのインスタンスは一つの型につき一つまでのため、
>> 複数表示する場合は
>> ・画像ごとに別のフォームを用意する
>> ・QuillではなくS2Containerの方を使う(インスタンス管理はprototypeあど)
>>http://s2container.net.seasar.org/ja/dicontainer-reference.html#InstanceMode)
>> ・S2Windows.NETを使わずに通常の方法でフォームを表示させる
>> などの対策が必要かもしれません。
>>
>> 2010年1月12日14:23  <[E-MAIL ADDRESS DELETED]>:
>> > uparrowと申します。
>> >
>> > Quillを使ってWindowsFormの画面遷移の制御を行っております。
>> > 今まで作成した画面遷移はモーダルフォームで特に問題なく利用できております。
>> >
>> > このたび、メインのフォームからボタンを押下するたび、指定したパスの画像を
>> > 表示したフォームをいくつも表示するような機能を作成しており、
>> > 画像を表示するフォームはモーダレスのフォームで作成しました。
>> >
>> > ■FormDispatcherインターフェイス
>> >    [Implementation]
>> >    [Aspect(typeof(QuillFormInterceptor))]
>> >    public interface IViewImageFormDispatcher
>> >    {
>> >        [TargetForm(typeof(PjViewImageForm), ModalType.Modaless)]
>> >        void ShowImage(string ImageFilePath);
>> >    }
>> >
>> > このようにインタフェースを作成し、
>> > メインの画面からボタンを押下すると、PjViewImageFormのフォームが表示され
>> > ます。
>> > このフォームを閉じてから、再度ボタンを押下すると、
>> > System.ObjectDisposedException はハンドルされませんでした。
>> >  Message="破棄されたオブジェクトにアクセスできません。\r\nオブジェクト名 'PjViewImageForm' です。"
>> > というようなエラーが発生してしまいます。
>> >
>> > モーダレスをモーダルにすると、フォームを表示、閉じるを繰り返しても
>> > エラーは発生しません。
>> >
>> > モーダレスの時はなにか特別な設定ややり方があるのでしょうか?
>> > そもそも、使い方が正しくないのでしょうか?
>> >
>> > お教えいただけると助かります。
>> >
>> > 最終的には、メインの画面に複数のボタンを配置し、ボタンに関連する画像の
>> > フォームを複数表示したいと考えております。
>> >
>> > よろしくお願いいたします。
>> > _______________________________________________
>> > seasar-dotnet mailing list
>> > [E-MAIL ADDRESS DELETED]
>> > https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>> >
>> _______________________________________________
>> seasar-dotnet mailing list
>> [E-MAIL ADDRESS DELETED]
>> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>
>
> _______________________________________________
> seasar-dotnet mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>


seasar-dotnet メーリングリストの案内