【发布时间】:2013-03-18 17:48:45
【问题描述】:
我正在尝试从以下示例中翻译以下内容 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”的合适的用户定义转换
【问题讨论】:
-
你曾经用谷歌搜索过代码或语法吗?我只是在谷歌上搜索了 --- 在 c++ 中并找到了 MSDN 参考 msdn.microsoft.com/en-us/library/b0kk5few(v=vs.80).aspx
-
是的,我做到了……但是……这主要是标准运算符的默认教程
-
C++ 中没有
foreach(.. in ..)语法。您必须使用普通的for循环使用索引来访问项目。
标签: c# winforms visual-c++ c++-cli