Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 检查是否单击了其他窗口中的按钮_C#_Wpf - Fatal编程技术网

C# 检查是否单击了其他窗口中的按钮

C# 检查是否单击了其他窗口中的按钮,c#,wpf,C#,Wpf,我想打开一个窗口,如果一个按钮被点击,并且该按钮位于另一个窗口中。 那么,如何检查另一个窗口中的按钮是否被单击 现在我在一个名为“RightButton.cs”的类中编写代码 我想在单击“原因”窗口中的“添加”按钮时打开一个名为“弹出”的窗口 PaidOutReason paid = new PaidOutReason(trnprt, apiParameters); paid.ShowDialog(); if (paid.btnSave.ClickMode == new ClickMod

我想打开一个窗口,如果一个按钮被点击,并且该按钮位于另一个窗口中。 那么,如何检查另一个窗口中的按钮是否被单击


现在我在一个名为“RightButton.cs”的类中编写代码 我想在单击“原因”窗口中的“添加”按钮时打开一个名为“弹出”的窗口

PaidOutReason paid = new PaidOutReason(trnprt, apiParameters); 

paid.ShowDialog(); 

if (paid.btnSave.ClickMode == new ClickMode()) 
{ 
    PopUpBanks popu = new PopUpBanks(this); 
    popu.Show(); 
}
这一个工作得很好,但我必须删除ShowDialog()并用Show()替换它。然后它就不起作用了


这是一个POS系统。它有一个名为“键盘”的用户控件。当“原因”窗口打开时,此键盘也要打开。因此,我必须将ShowDialog()替换为Show()。

我将向窗口添加一个事件,并将一个事件处理程序绑定到该窗口

class WndWindow{
    BtnPaid_Click(object sender, EventArgs e){
        using(var paid = new PaidOutReason()){
            paid.BtnAddClick += Paid_BtnAddClick;
            paid.ShowDialog();
            paid.BtnAddClick -= Paid_BtnAddClick;
        }
    }

    Paid_BtnAddClick(object sender, EventArgs e){
        var popu = new PopUpBanks();
        popu.Show();
    }
}

class PaidOutReason{
    public event EventHandler BtnAddClick;

    BtnAdd_Click(object sender, EventArgs e){
        //Do standard event handler code

        BtnAddClick?.Invoke(this, e);
    }
}

如果需要执行任何类型的检查,可以在读取事件之前执行,如果检查失败,只需返回即可。

我会将事件添加到窗口,并将事件处理程序绑定到该窗口

class WndWindow{
    BtnPaid_Click(object sender, EventArgs e){
        using(var paid = new PaidOutReason()){
            paid.BtnAddClick += Paid_BtnAddClick;
            paid.ShowDialog();
            paid.BtnAddClick -= Paid_BtnAddClick;
        }
    }

    Paid_BtnAddClick(object sender, EventArgs e){
        var popu = new PopUpBanks();
        popu.Show();
    }
}

class PaidOutReason{
    public event EventHandler BtnAddClick;

    BtnAdd_Click(object sender, EventArgs e){
        //Do standard event handler code

        BtnAddClick?.Invoke(this, e);
    }
}

如果您需要执行任何类型的检查,可以在读取事件之前执行,如果检查失败,只需返回即可。

您可以在应用程序中使用静态控件。例如,首先在App.xaml.cs中声明静态窗口对象

public static PaidOutReason paidOutWindow;
然后,在应用程序构造函数方法中,在初始化组件()之后,初始化静态窗口类:

paidOutWindow = new PaidOutReason();
你可能想知道它给了你什么。由于它是POS应用程序,所以您可能经常重复使用同一组窗口,这意味着您可以将窗口对象保存在内存中并引用它(并在需要时进行更改)。此外,在完成此操作后,您可以通过键入来访问PaidOutReason对象中的所有结构

App.paidOutWindow.FunctionName();

最后,您应该可以访问所有窗口函数,例如ShowDialog()

您可以在应用程序中使用静态控件。例如,首先在App.xaml.cs中声明静态窗口对象

public static PaidOutReason paidOutWindow;
然后,在应用程序构造函数方法中,在初始化组件()之后,初始化静态窗口类:

paidOutWindow = new PaidOutReason();
你可能想知道它给了你什么。由于它是POS应用程序,所以您可能经常重复使用同一组窗口,这意味着您可以将窗口对象保存在内存中并引用它(并在需要时进行更改)。此外,在完成此操作后,您可以通过键入来访问PaidOutReason对象中的所有结构

App.paidOutWindow.FunctionName();

最后,您应该可以访问所有窗口函数,例如ShowDialog()

如果您使用的是MVVM模式,那么您可以使用命令绑定来显示popubanks窗口。 例如:

public class ViewModel : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;
        public ICommand AddCommand { get; set; }

        public ViewModel()
        {
            AddCommand = new RelayCommand(AddCommandHandler);

        }

        private void AddCommandHandler()
        {
            IPopUpBanks popu = new PopUpBanks(this);
            popu.Show();
        }
    }
PaidOutReason查看: 1. <代码> 2.将上述viewmodel设置为PaidOutReason视图的datacontext


创建一个包含Show()方法的接口,并在popubanks视图上实现该接口。

如果您使用的是MVVM模式,则可以使用命令绑定来显示popubanks窗口。 例如:

public class ViewModel : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;
        public ICommand AddCommand { get; set; }

        public ViewModel()
        {
            AddCommand = new RelayCommand(AddCommandHandler);

        }

        private void AddCommandHandler()
        {
            IPopUpBanks popu = new PopUpBanks(this);
            popu.Show();
        }
    }
PaidOutReason查看: 1. <代码> 2.将上述viewmodel设置为PaidOutReason视图的datacontext


创建包含Show()方法的接口,并在popubanks视图上实现此接口。

处理
单击
事件的
btnSave

PaidOutReason paid = new PaidOutReason(trnprt, apiParameters);
paid.btnSave.Click += (ss, ee) => 
{
    PopUpBanks popu = new PopUpBanks(this);
    popu.Show();
};
paid.Show();

处理
btnSave
单击事件:

PaidOutReason paid = new PaidOutReason(trnprt, apiParameters);
paid.btnSave.Click += (ss, ee) => 
{
    PopUpBanks popu = new PopUpBanks(this);
    popu.Show();
};
paid.Show();


我将键盘窗口改为用户控件,然后在其中初始化了一个事件。然后我将键盘用户控件插入PaidOutReason窗口,然后调用事件。然后我可以使用ShowDialog()调用窗口

我将键盘窗口改为用户控件,然后在其中初始化了一个事件。然后我将键盘用户控件插入PaidOutReason窗口,然后调用事件。然后我可以使用ShowDialog()调用窗口

“另一个窗口”是指您的应用程序或其他正在运行的应用程序的另一个窗口?我的应用程序中的另一个窗口?为什么不将窗口执行代码放入该窗口的按钮中?现在我正在一个名为“RightButton.cs”的类中编写代码。我想在单击“Reason”窗口中的“Add”按钮时打开一个名为“PopUp”的窗口。是否使用MVVM模式和依赖项注入容器?另一个窗口表示应用程序或其他运行应用程序的另一个窗口?我的应用程序中的另一个窗口为什么不将窗口执行代码放在该窗口的按钮中?现在我在一个名为“RightButton.cs”的类中编码,我想在“Reason”中的“Add”按钮时打开一个名为“PopUp”的窗口窗口已单击。您是否使用MVVM模式和依赖项注入容器?对不起,请您将窗口和类的名称作为我的名称。这对我来说有点不清楚。我已经编辑过,包括了你的类名和变量名。实际上,在任何情况下都可以使用事件,您需要通知所属实例您已执行的操作,在本例中,当单击按钮时。这是什么“类WndWindow”和“Paid_BtnAddClick”?对不起,请您将窗口和类的名称作为我的名称提出来。这对我来说有点不清楚。我已经编辑过,包括了你的类名和变量名。实际上,在任何情况下都可以使用事件,在这种情况下,当单击按钮时,您需要通知所属实例您已执行的操作。这是什么“class WndWindow”和“Paid_BtnAddClick”?我将尝试这一个我将尝试这一个