Share via

Call certain event manually from mainwindow

Jamerson Schwitz 1 Reputation point
2022-01-14T08:24:06.17+00:00

I would like to call this function from MainWindow_Loaded

`private void RefreshProcess(SaveEventTriggerModelArgs obj)
{
var rect = new Rect();

        Dispatcher.Invoke(() =>
        {
            obj.CurrentEventTriggerModel.ProcessInfo = new ProcessInfo()
            {
                ProcessName = "Nox" != null ? $"Nox" : "", //ProcessName = process != null ? $"{process.ProcessName}" : "",
                Position = rect
            };
        });
    }`

However the problem I am running into due to lack of knowledge working with window apps I calling this method inside

private void MainWindow_Loaded(object sender, RoutedEventArgs e) //private void MainWindow_Loaded(object sender, RoutedEventArgs e)
        {
            //**would like to call RefreshProcess here**
        }

It will not let me because of the arguments 'SaveEventTriggerModelArgs obj' and if I add those into 'RefreshProcess, they are different from 'void MainWindow_Loaded(object sender, RoutedEventArgs e)'

'Loaded' is also being used in

public MainWindow()
        {
            _taskQueue = new TaskQueue();
            _viewMap = new Dictionary<string, SaveFileLoadModel>();

            InitializeComponent();
            Loaded += MainWindow_Loaded; //compiles well without  
  SaveEventTriggerModelArgs obj
        }

I need to somehow call implement a call "update" so to speak on So I would like to call RefreshProcess. Any advise would be much appreciated.

' private void RefreshProcess(SaveEventTriggerModelArgs obj)
{
var rect = new Rect();

        Dispatcher.Invoke(() =>
        {
            obj.CurrentEventTriggerModel.ProcessInfo = new ProcessInfo()
            {
                ProcessName = "notepad" != null ? $"notepad" : "", //ProcessName = process != null ? $"{process.ProcessName}" : "",
                Position = rect
            };
        });
    }'

SaveEventTriggerModelArgs is inside of EventArgModel.cs as such

' public class SaveEventTriggerModelArgs : INotifyEventArgs
{
public IBaseEventTriggerModel CurrentEventTriggerModel { get; set; }
}' '

INotifyEventArgs is in EventArgModel.cs as follows

' public interface INotifyEventArgs
{ }

public class MousePointEventArgs : INotifyEventArgs
{
    public MousePointViewMode MousePointViewMode { get; set; }
    public MonitorInfo MonitorInfo { get; set; }
    public MouseTriggerInfo MouseTriggerInfo { get; set; }
}'
Developer technologies | Windows Presentation Foundation
Developer technologies | .NET | .NET Runtime
Developer technologies | C#
Developer technologies | C#

An object-oriented and type-safe programming language that has its roots in the C family of languages and includes support for component-oriented programming.


1 answer

Sort by: Most helpful
  1. AgaveJoe 31,361 Reputation points
    2022-01-14T14:19:24.93+00:00

    Simply move the pertinent logic from MainWindow_Loaded handler to a new method that MainWindow_Loaded and your other logic can call.

    Was this answer helpful?


Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.