質問

C#でモバイルアプリケーションを開発しています。キーボード起動機能を使用して、テキストボックスの1つが集中したときにモバイルデバイスでキーボードを起動しています。次のコードを使用しています。

private void inputPanel1_EnabledChanged(object sender, EventArgs e)
        {
            InputEnabled();
        }

        private void InputEnabled()
        {
            int y;

            if (inputPanel1.Enabled)
                // SIP visible - position label just above the area covered by the input panel  
                y = Height - inputPanel1.Bounds.Height;
            else
                // SIP not visible - position label just above bottom of form
                y = Height;

            // Calculate the position of the top of the label
            //y = y - mainPanel.Height;
            //this.Dock = DockStyle.Top;
            //mainPanel.Location = new Point(0, y);
            this.Size = new Size(this.Size.Width, y);
            this.AutoScroll = true;

            //this.AutoScrollPosition = new Point(this.AutoScrollPosition.X, descriptionTextBox.Location.Y);
        }

上記のコードでは、Windowsフォームの高さを動的に変更しようとしています。アプリケーションにブレークポイントを追加しました。次の声明で

this.Size = new Size(this.Size.Width, y);

Yの値が右側の180に変更されることがわかります。しかし、左側では、これの値は変わらないままです。なぜこれが起こっているのか、私はまったく気づいていません。私のコードに何か問題があることを教えていただけますか、それとも左側のこの高さの値が変更されるように解決策を提供していただけますか?

役に立ちましたか?

解決

Winmobileアプリケーションでフォームサイズを変更するのは難しい場合があります。絶対に必要ではないにしても避けたいと思います。

この場合、フォームを変更する代わりに、コントロールをパネルに配置してパネルをサイズ変更できます。また、このアプローチを使用してソフト入力パネルを使用することもできます。 http://www.christec.co.nz/blog/archives/42

フォームの底にドッキングされたパネルのサイズ変更SIPと同じ高さになります。これにより、他のコントロールもフォームの底にドッキングされ、SIPで覆われた領域の上にあります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top