2012-05-25 25 views
5

Tôi đang sử dụng mã sau để đọc địa chỉ email từ DataGridView sau đó tạo email Outlook. Điều này hoạt động hoàn hảo, ngoại trừ email mới được đặt là topMost và/hoặc được mở dưới dạng cửa sổ hộp thoại, có nghĩa là tôi không thể nhấp hoặc làm bất kỳ điều gì khác trong Outlook trong khi cửa sổ email mới đang mở. Đây là vấn đề nếu tôi đã mở email mới của mình và tôi đang cố gắng tìm kiếm hoặc tìm kiếm thứ gì đó trong hộp thư đến của mình. Ngoài ra ứng dụng của tôi sẽ không trả lời (bị khóa) cho đến khi tôi đóng hoặc gửi email.triển vọng khóa email mới, buộc cửa sổ email là topMost

Có cách nào để tạo email mới và vẫn cho phép chức năng thông thường không? Nếu tôi nhấp vào nút email mới từ chính Outlook, tôi có thể mở nhiều email như tôi muốn, sử dụng tìm kiếm, v.v.

Dòng this.TopMost = false là ẩn ứng dụng WinForms và hiển thị cửa sổ email mới ở phía trước.

try 
{ 

     string emailString = resultsGrid[resultsGrid.Columns["Email"].Index, resultsGrid.SelectedCells[resultsGrid.Columns["Email"].Index].RowIndex].Value.ToString(); 

    if(emailString.Contains("mailto:")) 
    { 
     emailString = emailString.Replace("mailto:", ""); 
    } 

    this.TopMost = false; 

    // Create the Outlook application by using inline initialization. 
    Outlook.Application oApp = new Outlook.Application(); 

    //Create the new message by using the simplest approach. 
    Outlook.MailItem oMsg = (Outlook.MailItem)oApp.CreateItem(Outlook.OlItemType.olMailItem); 
    oMsg.Subject = ""; 
    oMsg.To = emailString; 
    oMsg.Body = ""; 
    oMsg.Display(true); 


    oMsg = null; 
    oApp = null; 
} 
catch (Exception ex) 
{ 
    MessageBox.Show(string.Format("An error occurred: {0}", ex.Message)); 
} 

Điều gì cũng lạ nếu tôi viết một số nội dung trong email và đóng nó, tôi có thể lưu nó. Nếu tôi làm điều này, khi tôi mở email trở lại, nó sẽ trở về trạng thái bị khóa. Tôi bắt đầu nghĩ rằng điều này có liên quan đến cách email được tạo, vì vậy một số cài đặt hoặc thuộc tính đang được áp dụng và được lưu với nó.

Trả lời

9

Hãy thử thay thế dòng này:

oMsg.Display(true); 

... với:

oMsg.Display(false); 

mỗi tài liệu MailItem.Display, tên của tham số là Modal, và cần được quy định như:

True để làm cho phương thức cửa sổ. Giá trị mặc định là False.

+0

hm không bao giờ được thử nghiệm, có nghĩa là "Hiển thị (Sai)" có nghĩa là không hiển thị email nào cả. Cảm ơn. – ikathegreat

Các vấn đề liên quan