我仍然被困住了。
假设我有一个带按钮的用户控件。还有一个名为damnIt_ButtonClicked的事件。 在主窗口中,我想模仿控件的生命周期,就像它是一个模态对话框,尽管它不是。
我想将所有内容都包装到一个方法中,如果控件上的Button单击,则返回true。
public bool Show() {
var control = new ControlWithSingleButton();
bool result;
control.damnIt_ButtonClicked += (object sender, EventArgs args) =>
{
result = true;
};
MainWindowGrid.Children.Add(control);
MainWindowGrid.Visibility = Visibility.Visible;
return result;
}
现在。如您所见,问题是此方法将始终返回false; 但是只有当damnIt_ButtonClicked事件触发时我才需要返回结果。这意味着我必须让线程等待,直到用户点击按钮。 对?或者应该怎么做。请帮帮我....
答案 0 :(得分:0)
您需要重新构建解决方案。如果不知道你想要做的更广泛的范围,这是一个可能的解决方案。
private bool buttonResult;
public void Show() {
var control = new ControlWithSingleButton();
bool result;
control.damnIt_ButtonClicked += (object sender, EventArgs args) =>
{
this.ProcessButtonClick();
};
MainWindowGrid.Children.Add(control);
MainWindowGrid.Visibility = Visibility.Visible;
}
private void ProcessButtonClick()
{
this.buttonResult = true;
//do whatever you would have before if Show had returned true
}
答案 1 :(得分:0)
我决定让控件成为一个窗口,虽然在给定的规格中严格禁止使用除Main之外的任何其他窗口。无论如何,它将是一个无边框,无边框的透明窗口,所以没有人能看到差异。
非常感谢你。