次の例から以下を翻訳しようとしています SplitContainer Splitter Gets Focus Rectangle?
private: Control getFocused(Control::ControlCollection controls)
{
//foreach (Control c in controls)
//{
// if (c.Focused)
// {
// // Return the focused control
// return c;
// }
// else if (c.ContainsFocus)
// {
// // If the focus is contained inside a control's children
// // return the child
// return getFocused(c.Controls);
// }
//}
do
{
if (c.Focused)
{
// Return the focused control
return c;
}
else if (c.ContainsFocus)
{
// If the focus is contained inside a control's children
// return the child
return getFocused(c.Controls);
}
}
while(Control c in controls);
// No control on the form has focus
return null;
}
DO WHILE ループに適したシンセザンクスを探しています
while(Control c in controls); // error
関数 ' private: Control getFocused(Control::ControlCollection controls)
' は Control 型であるため、戻り値を指定する必要があります。' return null;
' と ' return nullptr;
' の両方が失敗します。
編集:
for(int index = 0; index <= controls.Count; index++)
{
if(controls[index]->Focused)
{
return controls[index];
}
else if (controls[index]->ContainsFocus)
{
return getFocused(controls[index]->Controls);
}
}
return controls[index];
-> "System::Windows::Forms::Control ^" から "System::Windows::Forms::Control" への適切なユーザー定義の変換が存在しません。
return getFocused(controls[index]->Controls);
->関数 "getFocused" は、指定された引数リストで呼び出すことはできません。引数の型は次のとおりです: (System::Windows::Forms::Control::ControlCollection ^)
return null;
->識別子「null」は定義されていません
また
return nullptr;
-> "decltype(nullptr)" から "System::Windows::Forms::Control" への適切なユーザー定義の変換が存在しません