2015-09-23 2 views
0

J'ai créé un outil d'impression avec l'aperçu avant impression. L'aperçu avant impression est fait par formulaire. Je voudrais permettre à l'utilisateur de cliquer sur le bouton d'impression pour imprimer le document alors que le formulaire d'aperçu ne se ferme pas.Comment retourner la valeur par DialogResult.OK en ne fermant pas le formulaire

Comment puis-je renvoyer le DialogResult.OK à l'outil d'impression pour empêcher la disparition du formulaire?

+0

J'ai suggéré un moyen d'implémenter votre req, vous pouvez me demander si quelque chose n'est pas clair – Yael

+0

Pouvez-vous m'apprendre le chemin? – newstartgirls

Répondre

0

Il n'y a pas de fonctionnalité telle que je l'ai maintenant en C#. Cependant, vous pouvez créer une boîte de dialogue personnalisée pour le faire à la place.

public static class MyDialog 
{ 
    public static int ShowDialog(string text, string caption) 
    { 
     Form prompt = new Form(); 
     prompt.Width = 500; 
     prompt.Height = 100; 
     prompt.Text = caption; 
     Label textLabel = new Label() { Left = 50, Top=20, Text=text }; 
     NumericUpDown inputBox = new NumericUpDown() { Left = 50, Top=50, Width=400 }; 
     Button confirmation = new Button() { Text = "Ok", Left=350, Width=100, Top=70 }; 

     confirmation.Click += (sender, e) => { //YOUR FUNCTIONALITY }; 

     prompt.Controls.Add(confirmation); 
     prompt.Controls.Add(textLabel); 
     prompt.Controls.Add(inputBox); 
     prompt.ShowDialog(); 

     return (int)inputBox.Value; 
    } 
} 

Ensuite, appelez à l'aide:

int MyDialogValue = MyDialog.ShowDialog("Test", "123"); 
0

Vous ne pouvez pas.

DialogResult est utilisé avec les fenêtres modales. Les fenêtres modales piratent essentiellement la boucle de message de l'interface utilisateur sous-jacente, ce qui les rend synchrones par rapport à l'appelant.

Si vous avez besoin de l'aperçu avant impression pour lancer l'impression tout en conservant le dialogue modal, donnez-lui simplement le moyen de lancer l'impression, plutôt que de faire réagir l'appelant à un DialogResult retourné. Probablement le moyen le plus facile de le faire serait de simplement passer un délégué Action à la boîte de dialogue - lorsque vous appuyez sur OK, vous appelez le délégué.