gpt4 book ai didi

c# - 打开第二个表单时确定发件人?

转载 作者:行者123 更新时间:2023-11-30 22:01:55 24 4
gpt4 key购买 nike

我在最近的一个项目中学习了 C# 和 WPF,但在打开某个表单时遇到了确定发件人的问题。我有一个带有绑定(bind)到对象列表的列表框的主窗体。我使用以下代码来处理用户双击列表框中的一行:

        <ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}" BasedOn="{StaticResource {x:Type ListBoxItem}}">
<EventSetter Event="MouseDoubleClick" Handler="ListBoxItem_MouseDoubleClick"/>
</Style>
</ListBox.ItemContainerStyle>

我遇到的问题是我想在用户双击时启动第二个窗体(名为“AddProject”),但我也从主窗体上的按钮启动相同的窗体。我需要确定哪个(双击或按钮单击)启动了辅助表单,以便我可以适本地更改它。

在主窗体中,我可以使用 Window_loaded 方法并读取发件人姓名,但是当我尝试在辅助窗体中使用相同方法时,它不起作用。这适用于主要形式,但不适用于次要形式:

   private void Window_Loaded(object sender, RoutedEventArgs e)
{
MessageBox.Show(sender.ToString());
}

单击按钮时,将运行以下代码以打开 AddProject 窗体:

   private void btnAddProject_Click(object sender, RoutedEventArgs e)
{
AddProject frm = new AddProject();

frm.ShowDialog();
}

我知道确定发件人是整个堆栈溢出的一个常见问题,但我找不到关于如何确定打开第二个表单的发件人的好答案。我想我可以在第二种形式的 window_load 方法中运行它,但这似乎不起作用。非常感谢能回答我的问题的任何帮助或讨论链接!

最佳答案

大概你有这样的东西:

private void ListBoxItem_MouseDoubleClick(object sender, RoutedEventArgs e)
{
AddProject frm = new AddProject();

frm.ShowDialog();
}

当然你已经明确声明你有这个:

private void btnAddProject_Click(object sender, RoutedEventArgs e)
{
AddProject frm = new AddProject();

frm.ShowDialog();
}

为什么不能只更改 AddProject 类构造函数并传递适当的标志?像这样:

class AddProject
{
private bool _fromButton;

public AddProject(bool fromButton)
{
_fromButton = fromButton;
InitializeComponent();
}
}

那么你的方法看起来像这样:

private void ListBoxItem_MouseDoubleClick(object sender, RoutedEventArgs e)
{
AddProject frm = new AddProject(false);

frm.ShowDialog();
}

private void btnAddProject_Click(object sender, RoutedEventArgs e)
{
AddProject frm = new AddProject(true);

frm.ShowDialog();
}

关于c# - 打开第二个表单时确定发件人?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27325931/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com