检查是否单击了另一个窗口中的按钮

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


现在我在一个名为“RightButton.cs”的类中编码,当单击“原因”窗口中的“添加”按钮时,我想打开一个名为“PopUp”的窗口。


PaidOutReason paid = new PaidOutReason(trnprt, apiParameters); 


paid.ShowDialog(); 


if (paid.btnSave.ClickMode == new ClickMode()) 

    PopUpBanks popu = new PopUpBanks(this); 

    popu.Show(); 

}

这个工作完美,但我不得不删除 ShowDialog() 并用 Show() 替换它。然后它不起作用。


这是针对 POS 系统的。它有一个名为“键盘”的用户控件。当“原因”窗口打开时,此键盘也希望打开。因此我不得不用 Show() 替换 ShowDialog()。


PIPIONE
浏览 292回答 3
3回答

慕森卡

我会向窗口添加一个事件,并将一个事件处理程序绑定到它。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);    }}如果您需要执行任何类型的检查,您可以在阅读事件之前执行此操作,如果检查失败则简单地返回。

弑天下

处理以下Click事件btnSave:PaidOutReason paid = new PaidOutReason(trnprt, apiParameters);paid.btnSave.Click += (ss, ee) => {    PopUpBanks popu = new PopUpBanks(this);    popu.Show();};paid.Show();

宝慕林4294392

如果您使用的是 MVVM 模式,那么您可以使用命令绑定来显示 PopupBanks 窗口。例如:public class ViewModel : INotifyPropertyChanged&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; public event PropertyChangedEventHandler PropertyChanged;&nbsp; &nbsp; &nbsp; &nbsp; public ICommand AddCommand { get; set; }&nbsp; &nbsp; &nbsp; &nbsp; public ViewModel()&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; AddCommand = new RelayCommand(AddCommandHandler);&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; private void AddCommandHandler()&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; IPopUpBanks popu = new PopUpBanks(this);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; popu.Show();&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }PaidOutReason视图: 1. <Button x:Name="Add" Command={Binding AddCommand}/> 2. 将上述viewmodel 设置为PaidOutReason 视图的datacontext。创建一个包含 Show() 方法的接口 IPopUpBanks 并在PopUpBanks视图上实现此接口。
打开App,查看更多内容
随时随地看视频慕课网APP