0
私は追加/
private void UndockControl()
{
if (Parent == null)
{
Control c = this.Parent;
}
if (m_floatingFrame == null)
{
m_floatingFrame = new FloatingFrameWindow();
m_floatingFrame.Owner = ParentForm;
}
if (Parent is TableLayoutPanel)
{
var parentPanel = (TableLayoutPanel)Parent;
var col = parentPanel.GetColumn(this);
var small = new ColumnStyle(SizeType.Absolute, 1);
parentPanel.ColumnStyles[col] = small;
}
Parent.Controls.Remove(this);
m_floatingFrame.Controls.Add(this);
ParentForm.FormClosing += ParentForm_FormClosing;
Dock = DockStyle.Fill;
m_floatingFrame.Show();
m_isDocked = false;
uiDockButton.ImageIndex = 0;
}
この制御は、他のコントロールにネストされているこの機能を持っている別のクラスのC#のWinFormsを使用して、フォームクラスからControlオブジェクトを削除します。 関数をpublicにしてこのクラスのインスタンスを作成してこの関数を呼び出すと、コードを実行するとこの行にエラーが表示されますParent.Controls.Remove(this);
親オブジェクトがnull(ParentForm)であるためです。 このコントロールの親コントロールを持つためにインスタンス化する方法などがありますか? イベントボタンを使用して関数(他のクラス(フォーム)からではなく内部イベント)を呼び出すと、上のコードは正常に機能します。