双击listview行后,C#.NET窗口不会显示在前面

时间:2013-12-08 12:38:24

标签: c# .net listview window

我有一个我无法克服的问题。我认为这将是非常简单但我无法找到的东西..当我在用户双击listview中的一行时,我正在尝试打开新窗口以编辑联系人。窗口通常会打开,但问题是它不会在当前主窗口的前面打开,而是在它后面,因此它不可见,很容易混淆用户。我尝试了很少的方法,如BringIntoView()或玩焦点,但没有任何帮助。

请帮我解决这个问题。谢谢!

代码:

void ListViewItem_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
    editContact();
}


private void editContact()
{
    Window1 win = new Window1("edit");
    DatabaseHandler handler = new DatabaseHandler();
    win.Show();
    List<Contact> listie = handler.GetContactList();
    var selected = listview_contacts.SelectedItem as Contact;
    win.textbox_id.Text = selected.cId.ToString();
    win.textbox_name.Text = selected.Name.ToString();
    win.textbox_address.Text = selected.Address.ToString();
    win.textbox_email.Text = selected.Email.ToString();
    win.textbox_name.Focus();
    win.textbox_name.SelectionStart = win.textbox_name.Text.Length;
}

3 个答案:

答案 0 :(得分:0)

尝试

win.ShowDialog();

哪个应该打开新窗口作为模态窗口。

答案 1 :(得分:0)

private void editContact()
{
   using(Window1 win = new Window1("edit"))
   {
      DatabaseHandler handler = new DatabaseHandler();
      List<Contact> listie = handler.GetContactList();
      var selected = listview_contacts.SelectedItem as Contact;
      win.textbox_id.Text = selected.cId.ToString();
      win.textbox_name.Text = selected.Name.ToString();
      win.textbox_address.Text = selected.Address.ToString();
      win.textbox_email.Text = selected.Email.ToString();
      win.textbox_name.Focus();
      win.textbox_name.SelectionStart = win.textbox_name.Text.Length;
      win.ShowDialog();
      // do something with whatever win1 did.
      // if its say OK Cancrl form
      // if (win.ShowDialog() == DialogResult.OK) { // do something }
   }
}

可能会解决您的问题。但是,如果没有看到你的其他代码,或者知道你的意图,我就无法告诉你你出了多么糟糕的错误。 例如,至少所有设置win.textbox的代码都应该在win ...

答案 2 :(得分:0)

你可以尝试

win.Show(this);

这将使用户在打开编辑对话框时与主窗体进行交互。 或者你可以尝试

win.ShowDialog();

这将在您的编辑对话框打开时阻止主窗体。