由于 ContextMenuStrip 等相关控件不在窗体的Controls集合中,导致无法通过 Form.Controls 遍历找到 ContextMenuStrip 等相关控件,因此通过反射的方式获取
/// <summary>
/// 搜索Form的ContextMenuStrip
/// </summary>
/// <param name="form"></param>
private void FrmMain_FindContextMenuStrip(Form form)
{
if (form is null)
return;
System.Reflection.FieldInfo[] fieldInfo = form.GetType().GetFields(System.Reflection.BindingFlags.NonPublic |
System.Reflection.BindingFlags.Instance);
for (int i = 0; i < fieldInfo.Length; i++)
{
switch (fieldInfo[i].FieldType.Name)
{
case "ContextMenuStrip":
{
ContextMenuStrip contextMenuStrip = (ContextMenuStrip)fieldInfo[i].GetValue(form);
break;
}
}
}
}