2009-07-10 11 views
2

私はいくつかの入力コントロール、いくつかのテキストボックス、コンボボックス、およびリストボックスを使用して構築したコントロールを持っています。 1つのテキストボックス、コンボボックス、リストボックス、およびいくつかのコマンドボタンがアンカーされ、フォームでサイズが変更されます。コンボボックスは左、上、右に固定され、リストボックスは4辺すべてに固定され、ボタンは下と右に固定されます。彼らはすべてサイズを変更し、正しく位置を維持します。問題は、コンボボックスのように、アンカーしようとしているテキストボックスです。ランタイム時にフォームの右側から実行され、右側に固定されます。しかし、私は右に固定されているフォーム上の既存のコントロールのいずれかにこの問題はありません。それらはすべて想定どおりの位置にとどまります。固定されたコントロールは、それ自身でフォームを実行します

私は、追加のテキストボックスやコンボボックスを追加し、右にそれを固定しようとしたが、彼らはあまりにも、フォームの右端をオフに実行します。既存のコントロールは、1つのコントロールを除いては、同じように動作しますが、1つのコントロールと新しいコントロールはあまりにも幅が広がるのはなぜですか?

は参考のために、私はデザイナーが係留位置と幅が設定された後に発生するように、文の順序を変更するためのコードを生成し、操作しましたが、それは何も良いしませんでした。

 // 
     // txtComments 
     // 
     this.txtComments.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
        | System.Windows.Forms.AnchorStyles.Right))); 
     this.txtComments.Location = new System.Drawing.Point(430, 6); 
     this.txtComments.Name = "txtComments"; 
     this.txtComments.Size = new System.Drawing.Size(166, 20); 
     this.txtComments.TabIndex = 25; 

し、適切に動作してコンボボックスのコード:ふらちなテキストボックスのためであるとして、ここでは、コードです

 // 
     // cbMacroList 
     // 
     this.cbMacroList.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
        | System.Windows.Forms.AnchorStyles.Right))); 
     this.cbMacroList.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 
     this.cbMacroList.FormattingEnabled = true; 
     this.cbMacroList.Location = new System.Drawing.Point(128, 78); 
     this.cbMacroList.Name = "cbMacroList"; 
     this.cbMacroList.Size = new System.Drawing.Size(468, 21); 
     this.cbMacroList.TabIndex = 30; 
     this.cbMacroList.SelectedIndexChanged += new System.EventHandler(this.cbMacroList_SelectedIndexChanged); 
背景の一つ最後のピースは、これらのコントロールのすべてのフォームときのオフに来たということです

フォームが別のフォームで提供していた機能を再利用する必要があると判断しました。私はすべてのコントロールを選択し、それらをカットし、新しいUserControlに貼り付けました。 UserControlへの移行の前に、すべて正常に動作しました。これは移行後に表示され始めました。

答えて

0

これはかなり奇妙であるが、単にフォームからコントロールを削除し、再度それを配置することは問題を解決しました。デザイナーが生成したコードをフォーム上で再検証しました。フォームを作成したり、フォームに追加する方法には全く違いはありません。しかし、それは修正されました。なぜこのように振る舞うのだろう...

+0

私は今日、この問題を 'ListBox'で経験しました - 私のマシンに正しく固定されていますが、別のマシンには固定されていません。プロジェクトから削除して再追加しようとしましたが、これで問題が修正されませんでした(間にVSを閉じることさえあります)。最後に、 'ListBox'を' TextBox'に置き換えました(私のバグのように見えます) –

1

は、あなたの誤動作の制御はあなたがパネルか何かのように、期待されていない何かが親にされていませんか?

+0

私は二重チェックして 'this.Controls'に追加していますので、パネルや配置やレイアウトを妨げるものはありません。 – jasonh

関連する問題