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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.17815 の関連記事表示

<< 0 >>
■17815  TabControlのItemSizeを変更方法
□投稿者/ tanaka -(2008/05/02(Fri) 08:09:24)

    分類:[C#] 

    起動時にTabControlのItemSizeを変更させるにはどうすればいいのでしょうか。

    タブの外観はボタンにしてます。(Appearance.Buttons)
    タブ数は現状5ですが増減する可能性あり
    ItemSizeはTabControlのサイズを元に変更(下図のような感じ)


    【イメージ図】
    ┌----┐┌----┐┌----┐┌----┐┌----┐
    │tab1││tab2││tab3││tab4││tab5│
    └----┘└----┘└----┘└----┘└----┘
    ┌------------------------------------┐
    │ │
    │ │
    │ │
    └------------------------------------┘
親記事 /過去ログ35より / 関連記事表示
削除チェック/

■17816  Re[1]: TabControlのItemSizeを変更方法
□投稿者/ よねKEN -(2008/05/02(Fri) 09:02:13)
    #試してません。
    No17815 (tanaka さん) に返信
    > 起動時にTabControlのItemSizeを変更させるにはどうすればいいのでしょうか。

    TabControl.ItemSize プロパティ
    http://msdn.microsoft.com/ja-jp/library/system.windows.forms.tabcontrol.itemsize(VS.80).aspx
    より引用。

    「プロパティ値」の説明には以下のようにあります。
    >> タブのサイズを表す Size。既定では、タブのサイズは、アイコンやラベルを表示できるように自動的に調整されます。

    また、「解説」には以下のようにあります。
    >> ItemSize プロパティの Width プロパティを変更するには、SizeMode プロパティが Fixed に設定されている必要があります。

    タブのテキストによる自動調整、または、SizeMode=Fixedに設定した上でItemSize.Widthの変更ではどうですか?
記事No.17815 のレス /過去ログ35より / 関連記事表示
削除チェック/

■17868  Re[2]: TabControlのItemSizeを変更方法
□投稿者/ tanaka -(2008/05/02(Fri) 17:43:20)
    No17816 (よねKEN さん) に返信
    ご回答ありがとうございます。

    タブのサイズは変更できたのですが、新たな問題でタブをイメージ図のように
    変更させると右側にカーソル矢印が出てきて5つ目が途中で切れてしまいます。
    これはどうすることも出来ないのでしょうか。
記事No.17815 のレス /過去ログ35より / 関連記事表示
削除チェック/

■17880  Re[3]: TabControlのItemSizeを変更方法
□投稿者/ よねKEN -(2008/05/02(Fri) 22:20:04)
    2008/05/02(Fri) 22:20:43 編集(投稿者)

    No17868 (tanaka さん) に返信
    > タブのサイズは変更できたのですが、新たな問題でタブをイメージ図のように
    > 変更させると右側にカーソル矢印が出てきて5つ目が途中で切れてしまいます。
    > これはどうすることも出来ないのでしょうか。

    逆に聞きますが、どうしたいのでしょうか?

    例えば、tab1の幅を大きくしたとすると、物理的に残りのtab2〜tab5を今のサイズのまま全部を1行で表示することはできませんよね。
    ですので、デフォルトの動作としてあふれた分のタブを見せたり隠したりするために▲▼(のような部分)が表示されます。
    Multilineプロパティの設定によりこの動作の代わりに複数行にタブを表示することもできますが、
    標準ではその2通りの表現しかできないように思います。
    (ひょっとするとその他のプロパティ等の設定で別の表現方法もあるかもしれませんが)
記事No.17815 のレス /過去ログ35より / 関連記事表示
削除チェック/

■17883  Re[4]: TabControlのItemSizeを変更方法
□投稿者/ tanaka -(2008/05/02(Fri) 22:56:55)
    No17880 (よねKEN さん) に返信
    > 2008/05/02(Fri) 22:20:43 編集(投稿者)
    No17815 にイメージ図として記載しましたが、TabContorolを使用してますが見た目はボタン5とそれに対するフォームがあって
    そのボタンを押すごとに下の部分がそれぞれ対応した画面に切り替わるようにしたいです。

記事No.17815 のレス /過去ログ35より / 関連記事表示
削除チェック/

■17909  Re[5]: TabControlのItemSizeを変更方法
□投稿者/ よねKEN -(2008/05/03(Sat) 14:53:31)
    書き方が悪かったですかね。

    No17883 (tanaka さん) に返信
    > ■No17880 (よねKEN さん) に返信
    >>2008/05/02(Fri) 22:20:43 編集(投稿者)
    > No17815 にイメージ図として記載しましたが、TabContorolを使用してますが見た目はボタン5とそれに対するフォームがあって
    > そのボタンを押すごとに下の部分がそれぞれ対応した画面に切り替わるようにしたいです。

    私が逆質問しているのはそういう全体的な話ではなく、tab1〜tab5をどのように表示したいですか?ということです。
    先ほどの私の投稿で以下のように書きました。

    > 例えば、tab1の幅を大きくしたとすると、物理的に残りのtab2〜tab5を今のサイズのまま全部を1行で表示することはできませんよね。

    イメージ図にはtab1〜tab5が並んでいます。tab1の幅を大きくするとtab2〜tab5を並べるために必要な幅が物理的に足りなくなるのです。
    ということは、これらをどのように並べるべきか?ということ(画面仕様)を決めなければなりません。
    (TabControlでそれが実現できるかどうかは別として)

    No17883のご返答ではその点が触れられていませんので、現時点ではなんとも言えません。

記事No.17815 のレス /過去ログ35より / 関連記事表示
削除チェック/

■17912  Re[6]: TabControlのItemSizeを変更方法
□投稿者/ tanaka -(2008/05/03(Sat) 15:20:00)
    No17909 (よねKEN さん) に返信
    >イメージ図にはtab1〜tab5が並んでいます。tab1の幅を大きくするとtab2〜tab5を並べるために必要な幅が物理的に足りなくなる
    >のです。ということは、これらをどのように並べるべきか?ということ(画面仕様)を決めなければなりません。
    >(TabControlでそれが実現できるかどうかは別として)

    以下に例として記載しました。よねKEN 様のお聞きしたいこととまた違っていましたらご指摘ください。お願いします。

    【例】
    ・TabContorol.width=300
    ・tab1〜tab5のItemSize.Width=60
    ・tab1のItemSize.Width=100になった場合
           ↓
    ・tab2〜tab5のItemSize.Width=(TabContorol.width - tab1のItemSize.Width) / 4

    【ItemSize.Width】
    tab1   =100
    tab2〜tab5=50
記事No.17815 のレス /過去ログ35より / 関連記事表示
削除チェック/

■17914  Re[7]: TabControlのItemSizeを変更方法
□投稿者/ よねKEN -(2008/05/03(Sat) 16:03:44)
    2008/05/03(Sat) 16:05:24 編集(投稿者)

    > 以下に例として記載しました。よねKEN 様のお聞きしたいこととまた違っていましたらご指摘ください。お願いします。
    >
    > 【例】
    > ・TabContorol.width=300
    > ・tab1〜tab5のItemSize.Width=60
    > ・tab1のItemSize.Width=100になった場合
    >        ↓
    > ・tab2〜tab5のItemSize.Width=(TabContorol.width - tab1のItemSize.Width) / 4
    >
    > 【ItemSize.Width】
    > tab1   =100
    > tab2〜tab5=50

    私の聞きたかった点(tab2〜tab5をどう表示したいか?)という点が確認できましたので、内容は理解できました。
    最初の私の投稿ではMSDNで各プロパティを確認しただけで試していませんでしたので、
    今実際にItemSizeプロパティ等を使ってみました。それで、今気づいたところなのですが、
    ItemSizeプロパティはTabControlのプロパティで、すべてのタブに共通のサイズを与えるためのプロパティですね。
    そのため、ご希望のことはItemSizeプロパティを使って実現することはできません。

    ご希望に近い内容としては、TabControlのSizeMode=Normalの指定のままでTabPageのTextプロパティの文言に
    スペースを付加してサイズを調整する方法が考えられます。
    この内容を説明の便宜上ソースコードで表すと以下のような感じ。

    tabControl1.SizeMode = TabSizeMode.Normal;
    tabControl1.TabPages[0].Text = " tab1 "; // 掲示板の表示上"tab1"の前後にスペースが1つずつ入っているように見えますが、実際には5個ずつスペースを入れています。
    tabControl1.TabPages[1].Text = "tab2";
    tabControl1.TabPages[2].Text = "tab3";
    tabControl1.TabPages[3].Text = "tab4";
    tabControl1.TabPages[4].Text = "tab5";

    ただし、文字単位での幅調整しかできませんし、tab1〜tab5の幅の合計がTabControlの幅を超えてしまうと
    ▲▼(のような部分)の表示もされますので、何かしらの理由でそういったことが許容できないのであれば、
    TabControlを使うことを断念する必要があるかもしれません。

    #個人的にはTabSizeMode.Normalの設定の動作であるタブのテキストの文字数に合わせて幅が調整される
    #この動作をそのアプリの仕様とする方がプログラムが複雑にならないのでよいと思いますが。
記事No.17815 のレス /過去ログ35より / 関連記事表示
削除チェック/

■17915  Re[8]: TabControlのItemSizeを変更方法
□投稿者/ tanaka -(2008/05/03(Sat) 17:29:35)
    No17914 (よねKEN さん) に返信
    ご回答ありがとうございます。

    当方がイメージ図で書いたやりたい事がTabContorlでは無理であることが分かりました。
    確かに仕様という事でTabControlを使用した方が初心者の当方としても楽でいいのですが
    もし実現させる場合はMDI等も視野に入れたほうがいいのかもしれません。

    一般的にこのような感じのGUIや処理の場合どういう方法が一般的なのでしょうか。
記事No.17815 のレス /過去ログ35より / 関連記事表示
削除チェック/

■17924  Re[9]: TabControlのItemSizeを変更方法
□投稿者/ 渋木宏明(ひどり) -(2008/05/04(Sun) 01:13:43)
>
    2008/05/04(Sun) 01:16:15 編集(投稿者)

    > 一般的にこのような感じのGUIや処理の場合どういう方法が一般的なのでしょうか。

    汎用的なものに仕上げる必要もなさそうなので

    ・必要なだけチェックボックスを並べて、ボタンに見えるようにスタイルを設定
    ・ボタンと同じ数だけパネルを配置
    ・ボタンの押下と連動して、パネルの表示状態、表示位置、表示サイズを調整

    すればよろしんじゃないでしょうか。
記事No.17815 のレス /過去ログ35より / 関連記事表示
削除チェック/

■17927  Re[10]: TabControlのItemSizeを変更方法
□投稿者/ ま -(2008/05/04(Sun) 03:20:54)
    2008/05/04(Sun) 03:47:24 編集(投稿者)
    2008/05/04(Sun) 03:46:54 編集(投稿者)
    2008/05/04(Sun) 03:40:43 編集(投稿者)

    <pre><pre>■No17924 (渋木宏明(ひどり) さん) に返信
    > ・必要なだけチェックボックスを並べて、ボタンに見えるようにスタイルを設定
    ラジオボタンですよ、たぶん。
    やってみたけど、全部押下状態になってしまったもん。

    VBですけど、何かの参考にはなるか??ならんかも。
    フローレイアウトパネルだと、5タブ表示に必要な最低幅は340ドットでした。
    全部デフォルトで。ボタンの間は適当な間隔が空きます。

    テキストBOXのとこが、タブコンテンツ用のパネルに挿げ替わるだけですね。

    Public Class Form1

    Public Class MyTabCtrl : Inherits Panel

    Private flp As New FlowLayoutPanel
    Private txt As New TextBox


    Public Sub New()
    Me.Size = New Size(300, 300)
    Me.Dock = DockStyle.Fill

    'flp.BorderStyle = Windows.Forms.BorderStyle.FixedSingle
    flp.Height = 26

    flp.AutoScroll = False
    flp.AutoSizeMode = Windows.Forms.AutoSizeMode.GrowOnly
    flp.Dock = DockStyle.Top
    txt.Dock = DockStyle.Fill
    txt.Multiline = True
    txt.BorderStyle = Windows.Forms.BorderStyle.None

    Me.Controls.Add(txt)
    Me.Controls.Add(flp)

    For i As Integer = 0 To 5 - 1
    Dim cb As New RadioButton
    cb.Appearance = Appearance.Button
    cb.FlatStyle = FlatStyle.Flat
    cb.Text = String.Format("タブ[{0}]", i + 1)

    cb.Width = 60

    AddHandler cb.Click, AddressOf Tab_Changed
    cb.Tag = String.Format("タブ{0} 選択", i + 1)
    flp.Controls.Add(cb)

    Next

    With CType(flp.Controls(0), RadioButton)
    .PerformClick()
    End With

    End Sub

    Private Sub Tab_Changed(ByVal s As Object, ByVal e As EventArgs)
    Dim cb As RadioButton = CType(s, RadioButton)
    txt.Text = cb.Tag

    For i As Integer = 0 To 5 - 1
    Dim rb As RadioButton = CType(flp.Controls(i), RadioButton)
    If cb.Equals(rb) Then
    cb.Width = 100
    Else
    rb.Width = 50
    End If
    Next
    End Sub

    End Class


    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    Me.Size = New Size(340, 360)

    Me.Controls.Add(New MyTabCtrl())

    End Sub
    End Class

    訂正:タブっぽく見えるようにしました。
    フローレイアウトパネルの高さを調整することでボタンとコンテンツが繋がっているように
    見えるようにしました。
    ボタンルックが希望だから関係ないか。
    </pre></pre>
記事No.17815 のレス /過去ログ35より / 関連記事表示
削除チェック/

■17934  Re[11]: TabControlのItemSizeを変更方法
□投稿者/ tanaka -(2008/05/04(Sun) 14:49:45)
    皆様色々なご意見ありがとうございました。
    皆様のご意見や参考書やサイト等いろいろ参考に自分なりに試行錯誤してまいりましたが
    今の自分のスキルレベルなどを考えてとりあえず通常のTabContorolでAppearance=Normalにして
    ▲▼が表示されないようにwidthを均等割り-1等にすることにしました。
記事No.17815 のレス / END /過去ログ35より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -