В приложении silverlight есть кнопочное управление. Могу ли я программно отправить ему событие щелчка мыши?





Я не использовал Silverlight, но предполагаю, что это тот же процесс, что и Windows.Forms и WebControls. Вам просто нужно вызвать метод кнопки .Click(Object o, EventArgs e).
Вы не можете активировать событие Click по соображениям безопасности, потому что тогда вы сможете делать такие вещи, как принудительный переход пользователя в полноэкранный режим, без их ведома. Как сказал Оли, вы можете вызвать обработчик события Click напрямую, но на самом деле вы не можете запустить событие Click.
Классический способ сделать это в .Net - это выполнить P / Invoke SendInput () из user32.dll, так как это невозможно сделать с помощью .Net framework.
Я не знаком с Silverlight, но знаю, что он использует компактную песочницу .Net, поэтому, если совместимость доступна, вы найдете множество примеров в Интернете.
У меня есть кнопки для операций CRUD на моей странице, после сохранения, удаления или обновления мне нужно обновить данные в Datagrid. Самый простой способ - отправить событие щелчка на кнопку «Читать» из других кнопок CRUD
Этот код запускает это событие:
private void btnSave_Click(object sender, RoutedEventArgs e)
{
//.....Save Operation
//--At Finish refresh the datagrid
btnRead_Click(btnRead, new RoutedEventArgs());
}
Попробуйте использовать одноранговые узлы автоматизации (если вам абсолютно необходимо сделать это программно).
http://www.vbdotnetheaven.com/UploadFile/dbeniwal321/TriggerEvent01232009020637AM/TriggerEvent.aspx имеет образец с использованием vb.net
Идеальным способом было бы иметь общую функцию, которая вызывается как из обработчика нажатия кнопки, так и в других случаях, когда это необходимо.
Если вы все еще хотите это сделать. Теперь вы можете выполнить обновление до Silverlight версии 3.0 или более поздней и сделать следующее:
Вы можете использовать одноранговую кнопку автоматизации из System.Windows.Automation.Peers, чтобы выполнить то, что вы хотите.
if (button is Button)
{
ButtonAutomationPeer peer = new ButtonAutomationPeer((Button)button);
IInvokeProvider ip = (IInvokeProvider)peer;
ip.Invoke();
}