-2

こんにちは、私がここに投稿した写真に似たカスタムメイドのフレームを作成する方法を誰かに教えてもらえますか。フレームは、フレームに配置されたボタンに基づいてサイズを変更できる必要があります。ここに画像の説明を入力してください

アップロードされた写真はより良いアイデアを与えるかもしれません、私はそれに似たものを作りたいです。では、このようなフレームをWindowsフォームで作成するにはどうすればよいでしょうか。

私のコード:

private void button1_Click(object sender、EventArgs e){

        int start_x = Convert.ToInt32(textbox1.Text);
        int start_y = Convert.ToInt32(textbox2.Text);

        //Clear out the existing controls, we are generating a new table layout
        tableLayoutPanel1.Controls.Clear();

        //Clear out the existing row and column styles
        tableLayoutPanel1.ColumnStyles.Clear();
        tableLayoutPanel1.RowStyles.Clear();

        //Now we will generate the table, setting up the row and column counts first
        tableLayoutPanel1.ColumnCount = start_x;
        tableLayoutPanel1.RowCount = start_y;

        for (int x = 0; x < start_x; x++)
        {
            //First add a column
            tableLayoutPanel1.ColumnStyles.Add(new ColumnStyle(SizeType.AutoSize));

           for (int y = 0; y < start_y; y++)
           {
                //Next, add a row.  Only do this when once, when creating the first column
                if (x == 0)
                {
                    tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.AutoSize));
                }

                //Create the control, in this case we will add a button
                Button cmd = new Button();
                cmd.Width = 120;
                cmd.Height = 60;
                cmd.BackColor = Color.LightGreen;
                cmd.FlatStyle = FlatStyle.Popup;
                cmd.Text = string.Format("ds");
                cmd.Click += new EventHandler(this.btnDynamicButton_Click);

                //Finally, add the control to the correct location in the table
                tableLayoutPanel1.Controls.Add(cmd, x, y);
            }

しかし、そのフレームを作成してそれに応じて配置する方法がわかりません。

4

1 に答える 1

1

1)新しいWindowsフォームを作成します。

2)いくつかのボタンを配置してサイズを調整します。

3)フォームにResizingイベントのハンドラーを追加します。

4)サイズ変更イベントのウィンドウの新しいサイズに応じて、ボタンのサイズと位置を調整します。

.Net 4には、6つのコンテナコントロールがあります。Panel、SplitPanel、TabControl、TableLayoutPanel、およびFlowLayoutPanelです。Panelはニーズに合うと思うので、フォームにPanelコントロールを追加することから始めます。必要に応じてサイズを変更します。

パネルに1つのコマンドボタンを配置します。必要に応じてサイズを変更します。それを選択し、F4を押してプロパティウィンドウをアクティブにします。FlatAppearanceプロパティを見つけて、Flatに変更します。背景色を白に変更し、Textプロパティを空の文字列に変更します。これで、白いボタンが1つできました。それをコピーして3回貼り付けます。必要に応じてボタンを配置します。

緑色のボタンの場合:目的の画像ごとにビットマップの作成を開始します。コマンドボタンを1つ作成し、フラットスタイルに変更して、以前と同じように複製します。ボタンごとに、Imageプロパティを編集し、作成した画像をインポートします。

「静的」レイアウトができたら、いくつかの計算を行う必要があります。どのサイズ変更戦略を使用するかを決定する必要があります。

a)比例:拡大されたものはすべて、コンテナに比例して拡大します。

b)固定間隔の疑似比例。ボタン間に固定の間隔を設定し、同じ間隔を維持しながらボタンのサイズを変更します。

「a」が最も簡単な方法なので、その方法を説明します。

1)このようなテーブルを作成します。フォームがデザイナにある(実行されていない)ときに、コンテナ内のボタンの位置で値を入力します

レイアウト内の各ボタンの位置

2)サイズ変更イベントの場合:

2.1)XとYのスケーリング係数を決定します。それらをfactorXとFactorYと呼びましょう。

2.2)各ボタンの新しい位置は、元の位置にスケーリング係数を掛けたものになります。たとえば、Button1の場合、画面の幅が2倍、高さが3倍になると仮定します。

上:10 x 2 = 20左:10 x 3 = 30

2.3)各ボタンのサイズは、次の係数で調整された元のサイズになります。

幅:100 x 2 = 200高さ:100 x 3 = 300

下:20 + 200 = 220右:30 + 300 = 330

等々...

于 2012-10-26T07:04:35.880 に答える