Использование React и node.js может стать более безопасным решением для будущего, поскольку оно стало отраслевым стандартом ... вы уже смотрели: https://www.npmjs.com/package/react-jsonschema-form [ 110]
Это выглядит довольно солидным репо с точки зрения еженедельных загрузок и, кажется, хорошо подходит для вашего случая использования (я могу попробовать это сам). Единственным уловом было бы то, что есть кривая обучения, чтобы освоиться с миром React и nodejs. Я очень рекомендую это, хотя, если вы еще этого не сделали. Некоторые большие ресурсы, чтобы начать, могли бы включать:
Оттуда это может стать глубоким погружение, но я нахожу это забавным Удачи!
Невозможно вызвать событие C #
непосредственно из другого класса
(даже если это public
). Вы можете предоставить метод (с достаточным модификатором доступа), который вызывает событие
от вашего имени, и вызвать этот метод в другом классе
.
Кстати, это возможно с отражением, но я считаю, что это грязный взлом.
Большинство типов в CLR, которое вызывает события, имеет защищенный метод On [EventName], который заботится о возникновении события. Вы можете вызвать этот защищенный метод «извне», используя Reflection:
Control parent = ((Control)sender).Parent;
Type parentType = parent.GetType();
MethodInfo onClickMethod = parentType.GetMethod("OnClick", BindingFlags.Instance | BindingFlags.NonPublic);
onClickMethod.Invoke(parent, new object[] { e });
В зависимости от того, какую платформу вы используете, возможно, вам не нужно вручную вызывать событие click для родителя, WPF и ASP.NET например, всплывающие события вверх по дереву элементов.
Если это не вариант, вы можете делать то, что предлагает Мехрдад.
Единственная причина, по которой я могу подумать, почему вы захотите вызвать событие Click, - это если вы имитируете пользовательский ввод. Вы работаете над автоматизированным тестовым драйвером или чем-то в этом роде? Если это так, то могут быть лучшие решения, чем использование кода с помощью вспомогательных методов только для тестирования. Этот появляется первым в Google, я понятия не имею, хорошо ли это.
Если вы пытаетесь сделать это как своего рода управление потоком в самом приложении, я бы сделал шаг вернемся, чтобы понять, правильно ли это делать - это вроде "плохо пахнет".
Я реализовал это, используя методы отражения и расширения, так что я могу просто вызвать (в данном случае) событие щелчка LinkLabel, просто вызвав:
var link = new LinkLabel()'
link.Text = "Some link";
link.click();
щелчок () - это метод расширения C #:
public static void click(this LinkLabel linkLabel)
{
var e = new LinkLabelLinkClickedEventArgs((LinkLabel.Link)(linkLabel.prop("FocusLink")));
linkLabel.invoke("OnLinkClicked", e);
}
, который использует другие методы расширения, чтобы: