3

私がやろうとしているのは、winform の真ん中を展開して折りたたむことです。ここに同様の質問があることは知っていますが、実際に必要なことを行うものはありません。の使用について読んだFlowLayoutPanelことがありますが、機能させることができません。

私が達成したいことの例は次のとおりです。

私は自分のwinformを持っています(例)

例

クリックbutton1すると、中央のテキストボックスが非表示になり、フォームが縮小してスペースが非表示になり、クリックするとその逆になりますbutton2。いずれにせよbutton3、テキストボックスが表示されている場所または表示されていない場所の下に留まる必要があります。

これまでの私の試みは、テキストボックスを非表示にしてフォームで何もしないか、必要以上に縮小するかのいずれかです。現在、とに設定AutoSizeしています。trueAutoSizeModeGrowAndShrink

これまたは同様のことができるコントロールを見たことがありますが、フォームを展開するための矢印または小さなボタンがあります。これを行うにはボタンが必要です。

これを行う簡単な方法はありますか?

どんな助けでも感謝します。

アップデート

高さを 0 に設定し、提案どおりにテキスト ボックスを非表示にしようとしましたが、フォームの中央ではなく右側が折りたたまれます。

スクリーンショット

4

4 に答える 4

1

これは、パネルとドッキングを使用して実行する必要があります。使用するAutoSizeのは間違った方法です。

于 2012-05-10T10:29:27.967 に答える
1

私はゲームに遅れていますが、同じ問題を解決したばかりなので、解決策を提供したかったのです。

すでに述べFlowLayoutPanelたように、仕事をするために使用できます。フォームに入れるだけです。FlowDirection を設定し、TopDownボタンとテキストボックスを正しい順序で追加します。完了したらAutoSize、フォームと FlowLayoutPanel の を true に設定し、を に設定AutoSizeModeGrowAndShrinkます。

自動サイズ変更時に幅が崩れないようにする

問題は、AutoSize を true に設定し、テキスト ボックスを無効/非表示にすると、幅が狭くなることです。これは、テキスト ボックスがフォームで最も幅の広いコントロールであり、非表示の場合、幅が残りのコントロールで必要な幅に縮小されるために発生します。これを防ぐには、テキスト ボックスと同じ幅のパネル コントロールにボタンを配置します。テキストボックスが非表示になっている場合、幅は必要なだけ広くなります。

チェックボックスを使用して展開/折りたたむ

2 つのボタンを使用する代わりに、チェックボックスを使用して展開/折りたたみを行うのが好きです。サイズ変更のコーディング全体は、テキスト ボックスcheckbox1.Checkedのプロパティにプロパティのバインド行を 1 つ追加するだけで済みます。Visibility

textbox1.DataBindings.Add("表示", チェックボックス1, "チェック済み")

于 2014-07-14T08:48:30.193 に答える
1

フォームの元の高さを変数に保存して、後で再度展開したときに復元できるようにする必要があります。また、Button3 を下部に固定すると、サイズ変更中に処理する必要がなくなります。

public partial class Form1 : Form {
  private int originalHeight;

  public Form1() {
    InitializeComponent();
    button3.Anchor = AnchorStyles.Left | AnchorStyles.Bottom;
  }

  protected override void OnLoad(EventArgs e) {
    originalHeight = this.Height;
    base.OnLoad(e);
  }

  private void button1_Click(object sender, EventArgs e) {
    textBox1.Visible = false;
    this.Height = originalHeight - textBox1.Height;
  }

  private void button2_Click(object sender, EventArgs e) {
    this.Height = originalHeight;
    textBox1.Visible = true;
  }
}

AutoSize=false;自分でサイズ変更を処理しているため、フォームに を残します。

フォームが展開されている場合は Button2 が役に立たず、フォームが折りたたまれている場合は Button1 が役に立たないため、1 つのボタンを使用してフォームの切り替えを処理することを検討します。

于 2012-05-10T12:33:07.090 に答える
0

コントロールを非表示にし、それに応じてHeightプロパティを設定します。

于 2012-05-10T10:28:42.320 に答える