0

フォントとそのサイズ識別子に基づいて、テキストの高さを計算したいと思います。ただし、これはコンパイルされません(「コントロールは、あるケースラベル(「デフォルト:」)から別のケースラベルにフォールスルーできません」と文句を言います):

    private int GetHeightForFontAndFontSize(int fontType, int fontSizeId)
    {
        int retVal = 0;
        if (fontType == 0)
        {
            switch (fontSizeId)
            {
                case 0:
                case 1:
                    retVal = 9;
                    break;
                case 2:
                case 3:
                case 4:
                    retVal = 18;
                    break;
                case 5:
                case 6:
                    retVal = 36;
                    break;
                default:
                    retVal = 9;
            }           
        }
        if (fontType == 1)
        . . .

                          return retVal;
    }

...これでも:http://msdn.microsoft.com/en-us/library/06tc147t (v = vs.71).aspxは、「あるケースラベルから別のケースラベルへのフォールスルーはサポートされていませんが、たとえば、ケースラベルを積み重ねることができます。」

ケースラベルが描かれているように積み重ねているように見えますが、何が問題なのでしょうか。

4

3 に答える 3

5

ケースに必要break;ですdefault:

于 2013-02-11T23:16:31.897 に答える
1

break;デフォルトの後にアフターを付けてみてください。

于 2013-02-11T23:17:22.273 に答える
1

これが修正されたコードです。デフォルトの場合にブレークを追加しました。

private int GetHeightForFontAndFontSize(int fontType, int fontSizeId)
    {
        int retVal = 0;
        if (fontType == 0)
        {
            switch (fontSizeId)
            {
                case 0:
                case 1:
                    retVal = 9;
                    break;
                case 2:
                case 3:
                case 4:
                    retVal = 18;
                    break;
                case 5:
                case 6:
                    retVal = 36;
                    break;
                default:
                    retVal = 9;
                    break;
            }           
        }
        if (fontType == 1)
        . . .

                          return retVal;
    }
于 2013-02-11T23:31:49.473 に答える