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

标签 c# wpf

我最近在一个项目中学习了 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/

相关文章:

c# - 控制模板 : how to create bindings

wpf - ItemsControl (WrapPanel) 分组应拆分 GroupItems

wpf - 如何在 DataGrid.DataGridTemplateColumn 内设置 UserControl 的 DataContext?

c# - 带计时器的 .NET Windows 服务停止响应

C# Winform 带像素化的图像缩放

c# - 删除匿名事件处理程序

wpf - WPF 控件上的 Viewport2DVisual3D 文本模糊

c# - Azure AD - HTTP/1.1 401 未经授权 - Windows 服务

c# - 在 Azure Function v3 中获取连接字符串

c# - 我们如何以编程方式更改无线蓝牙 radio 电源管理 C#