![](/img/trans.png)
[英]how to check whether a button is clicked, inside another button click event in windows form application in C#
[英]check whether a button in another window is clicked
如果要單擊一個按鈕,並且該按鈕位於另一個窗口中,我想打開一個窗口。 那么如何檢查另一個窗口中的按鈕是否被單擊呢?
現在,我正在編寫一個名為“ 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()。
我將事件添加到窗口,並將事件處理程序綁定到該窗口。
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;
然后,在App構造函數方法中,在InitializingComponent()之后 ,初始化靜態窗口類:
paidOutWindow = new PaidOutReason();
您可能想知道它能給您帶來什么。 由於它是POS應用程序,因此您可能會經常重復使用同一組窗口,這意味着您可以將窗口對象保存在內存中並對其進行引用(並在需要時進行更改)。 此外,完成此操作后,您將可以通過鍵入以下內容訪問PaidOutReason對象內的所有結構:
App.paidOutWindow.FunctionName();
最后,您應該可以訪問所有窗口函數,例如ShowDialog() 。
如果使用的是MVVM模式,則可以使用命令綁定來顯示PopupBanks窗口。 例如:
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. <Button x:Name="Add" Command={Binding AddCommand}/>
2.將上述視圖模型設置為PaidOutReason視圖的數據上下文。
創建一個包含Show()方法的接口IPopUpBanks並在PopUpBanks視圖上實現此接口。
處理btnSave
的Click
事件:
PaidOutReason paid = new PaidOutReason(trnprt, apiParameters);
paid.btnSave.Click += (ss, ee) =>
{
PopUpBanks popu = new PopUpBanks(this);
popu.Show();
};
paid.Show();
我使它成為用戶控件,而不是鍵盤窗口,然后在其中初始化一個事件。 然后,我將該鍵盤用戶控件插入PaidOutReason窗口,然后調用該事件。 然后,我可以使用ShowDialog()調用窗口。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.