我有一个我无法克服的问题。我认为这将是非常简单但我无法找到的东西..当我在用户双击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;
}
答案 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();
这将在您的编辑对话框打开时阻止主窗体。