DOBON.NET DOBON.NETプログラミング掲示板過去ログ

タブの非表示に伴う不具合について

環境/言語:[WindowsXP、VB.NET、.NET Framework1.0]
分類:[.NET]

初めて投稿させていただくものです。
よろしくお願いいたします。

URLページを参考にさせていただき、TabPageを非表示にする設定をし、
成功いたしました。
しかし、他のフォームを開くときに設定していた元フォームに対する
Close動作が無効になってしまいました。

Form_Load時に設定している以下のコードを取り除くと
普通に動きます。
対策がありましたら教えていただけないでしょうか。
よろしくお願いいたします。

    'TabPageManagerオブジェクトの作成
_tabPageManager = New TabPageManager(TabControl1)

'勤怠と業務のTabPageを表示する
_tabPageManager.ChangeTabPageVisible(2, True)
_tabPageManager.ChangeTabPageVisible(4, True)
'それ以外のTabPageを非表示にする
_tabPageManager.ChangeTabPageVisible(0, False)
_tabPageManager.ChangeTabPageVisible(1, False)
_tabPageManager.ChangeTabPageVisible(3, False)
_tabPageManager.ChangeTabPageVisible(5, False)
_tabPageManager.ChangeTabPageVisible(6, False)
■No18148に返信(aikouさんの記事)
> しかし、他のフォームを開くときに設定していた元フォームに対する
> Close動作が無効になってしまいました。

申し訳ありませんが、この部分の意味がさっぱり分かりません。他フォーム、元フォームが何で、タブコントロールのあるフォームとの関係がどうなのか、全く分かりません。私のように頭の良くない人にも理解できるように説明していただけないでしょうか?
■No18151に返信(管理人さんの記事)
> ■No18148に返信(aikouさんの記事)
>>しかし、他のフォームを開くときに設定していた元フォームに対する
>>Close動作が無効になってしまいました。
>

説明が拙くてすみませんでした。
タブの非表示を設定しているフォーム上のボタンにて、
他のフォームを開こうとするときに、タブを設定している
フォーム(これを元フォームと表現しました)を
閉じようとしたら、なぜか閉じることができない
ということです。

よろしくお願いいたします。
【わかった事】
・親フォーム上にTabControlとButtonがある。
・TabControl上のTabPageは非表示(まあ削除ですよね)してある。
・Buttonをクリックすると、子フォームを開く。

【わからない事】
・親フォームを削除する処理は『親フォーム』にあるのか、『子フォーム』にあるのか。

とりあえず、close処理周りのロジックを提示してください。
■No18154に返信(ワケワカメさんの記事)
> 【わかった事】
> ・親フォーム上にTabControlとButtonがある。
> ・TabControl上のTabPageは非表示(まあ削除ですよね)してある。
> ・Buttonをクリックすると、子フォームを開く。
>
> 【わからない事】
> ・親フォームを削除する処理は『親フォーム』にあるのか、『子フォーム』にあるのか。
>
> とりあえず、close処理周りのロジックを提示してください。


レスありがとうございます。
以下のようにコードを書いております。
アドバイスお願いいたします。

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

    If Me.RadioButton1.Checked = True Then
Dim f As New よみがな検索()
f.Show()
Me.Close()

    ElseIf Me.RadioButton2.Checked = True Then
Dim f As New よみがな検索2退職者()
f.Show()
Me.Close()

    End If

End Sub
んで、どこで処理が落ちるの?
それとエラーメッセージは?
■No18162に返信(ワケワカメさんの記事)
> んで、どこで処理が落ちるの?
> それとエラーメッセージは?

返信ありがとうございます。
分かりにくくてすみません。
簡単に言うと、Form_Load時にタブ非表示のコードを記入すると
Close動作自体がまったく無効になり、
画面右上の「×」ボタンで閉じることもできなくなる
ということなのです。

ちなみにエラーメッセージは出ていません。
不思議な現象で非常に困っているのです。
よろしくお願いいたします。
まだ不明な点が多々ありますが、私がちょっと試したところでは、そのような問題は起こりませんでした。

そのような問題が起こる状況を絞り込むためにも、簡単なアプリケーションを作成して問題が再現するか試してみてはいかがでしょうか?簡単なアプリケーションで問題が再現できるようでしたら、どのようにすれば再現するか教えていただけませんか?
2006/11/10(Fri) 12:17:33 編集(投稿者)

■No18174に返信(管理人さんの記事)
> まだ不明な点が多々ありますが、私がちょっと試したところでは、そのような問題は起こりませんでした。
>
> そのような問題が起こる状況を絞り込むためにも、簡単なアプリケーションを作成して問題が再現するか試してみてはいかがでしょうか?簡単なアプリケーションで問題が再現できるようでしたら、どのようにすれば再現するか教えていただけませんか?

お世話になっております。
簡単なアプリケーションを作ってみました。
まずは、タブコントロール内にTextBox等を配置しない空のもので
実行すると「Close」動作に不具合は出ませんでした。

しかし、非表示にするタブページ内に
TextBoxを配置し実行すると「Close」動作が無効になりました。
(ただし、インデックスが最後のページにTextBoxを配置しても
不具合は出ません。)
よって、5ページぐらいあるタブコントロールの3〜5ページを
非表示にし、3ページ目にTextBoxを配置するような感じで
動作確認をしていただけますでしょうか。

お手数かけて申し訳ございません。
よろしくお願いいたします。
■No18178に返信(aikouさんの記事)
おっしゃるようにやってみましたが、問題は起こりませんでした(やはり説明が圧倒的に少ないので、aikouさんと同じかは分かりませんが)。ただ、私の環境は、.NET 1.1です。
返信が遅くなり申し訳ございません。
.NET 1.0という環境もよくないのかもしれませんので、
環境を整えて再度挑戦させていただきます、。

どうもありがとうございました。
またよろしくお願いいたします。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板