Impression d'une fenêtre

Résolu
loic20h28 Messages postés 207 Date d'inscription mardi 19 juin 2007 Statut Membre Dernière intervention 22 février 2016 - 27 mai 2008 à 12:05
loic20h28 Messages postés 207 Date d'inscription mardi 19 juin 2007 Statut Membre Dernière intervention 22 février 2016 - 6 juin 2008 à 22:25
Bonjour tout le monde,

J'ai réussis à faire en sorte d'imprimer ma deuxième form.

Mes 2 problèmes à présents sont :
*Je souhaiterais que dans la feuille imprimé, on ne voye pas la barre "démarrer" et le titre de la fenêtre. Cela est-il possible??si oui, comment dois-je procéder s'il vous plais??
* Ci-joint, la boîte de dialogue qui apparît avant l'impression. Le message "Page 1 sur document" est incomplet d'aprés moi, comment puis-je le remplir?? (c'est à dire avoir "Page 1 sur 1 document")

Voici le code que j'utilise pour l'impression (Ce code se situe derrière l'événement du clic d'un bouton se situant sur ma deuxième form(celle à imprimer)) :
privatevoid Imprimer_Click(object sender, System.EventArgs e)
{
     PrintDocument pd = new PrintDocument();
 
      // appel de la fonciton CreationBitmap()
     CreationBitmap();
 
     // évènement déclenché juste avant l'impression pour obtenir un dessin
     pd.PrintPage += new PrintPageEventHandler(pd_PrintPage); 
 
     // lancement de l'impression
     pd.Print();
}
 
privatevoid CreationBitmap()
{
   Bitmap screen;
   Bitmap window;
   Imprimer.Visible = false;
 
   // simuler l'appui de la touche PrintScreen
   SendKeys.SendWait("{PRTSC}");
   // récupérer l'image obtenue dans le Presse-Papier 
   window = ((Bitmap)(Clipboard.GetDataObject().GetData("Bitmap")));
   // attribuer l'image à PBWindow
   PBWindow.Image = window;
   
   // simuler le PrintScreen enrichi
   SendKeys.SendWait("+{PRTSC}");
   // récupérer l'image obtenue dans le Presse-Papier
   screen = ((Bitmap)(Clipboard.GetDataObject().GetData("Bitmap")));
   // attribuer l'image à PBScreen
   PBScreen.Image = screen;
}
 
privatevoid pd_PrintPage(object sender, PrintPageEventArgs e)

   // Là c'est comme si tu fais un dessin normal 
   Graphics dc = e.Graphics; 
 
   dc = Graphics.FromImage(PBScreen.Image);
   dc = Graphics.FromImage(PBWindow.Image);
 
   e.Graphics.DrawImage(PBScreen.Image, new PointF(50, 10));
 
   // Test s'il n'y a plus aucune page à imprimer 
   if( dc == null) 
      e.HasMorePages = true;
   else 
      e.HasMorePages = false; 
}

Merci d'avance!!<!-- END TEMPLATE: bbcode_code -->

31 réponses

Utilisateur anonyme
6 juin 2008 à 20:11
Il suffit de mettre les mêmes sources :
TaFormPourImprimer.LaDataGrid.DataSource = DataGridPremiereForm.DataSource

__________
  Kenji
0
Utilisateur anonyme
6 juin 2008 à 20:12
Pour le DataGridPrinter, as-tu télécharger le code ? (en haut à droite)
La classe doit normalement s'y trouver.
Par contre, il faut apparemment s'enregistrer pour le télécharger.

__________
  Kenji
0
loic20h28 Messages postés 207 Date d'inscription mardi 19 juin 2007 Statut Membre Dernière intervention 22 février 2016 2
6 juin 2008 à 20:50
Pour répondre a ta première réponse
: Ok, mais je vois pas trop ou le mettre : voici le code que j'utilise pour mettre les données de ma première form dans la deuxième.

Ce code se situe dans ma deuxième form :
public
void UpdateValues(
string NI,
string NC)
{
     NumInter.Text = NI;
     NomClient.Text = NC;
      ...
}

Ce code se situe dans ma première form :
private

void Imprimer_Click(
object sender, System.EventArgs e)
{

      Form2 F2 =
new Form2();
      F2.UpdateValues(NumInter.Text, NomClt.Text);
      F2.ShowDialog();
}

Pour répondre à ta deuxième réponse :
Ok, je n'avais pas vu qu'il fallais télécharger le code!

Cordialement.
0
Utilisateur anonyme
6 juin 2008 à 21:02
Si je situe bien, il suffit de le mettre dans Imprimer_Click,
F2.LeDataGrid.DadaSource = LeDataGridDeF1

__________
  Kenji
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
loic20h28 Messages postés 207 Date d'inscription mardi 19 juin 2007 Statut Membre Dernière intervention 22 février 2016 2
6 juin 2008 à 21:16
Ok, je vien de réaliser cela :
private

void Imprimer_Click(
object sender, System.EventArgs e)
{
    Form2 F2 =
new Form2();
    F2.UpdateValues(NumInter.Text, NomClt.Text);
    F2.ShowDialog(); 
    F2.dataGrid1.DataSource =
this.dataGrid1.DataSource;
}

Mais lorsque j'exéute mon application, il ne m'affiche rien dans le dataGrid de la Form2.

Comment faire!! Je vois pas pourquoi!!

Cordialement.
0
Utilisateur anonyme
6 juin 2008 à 21:26
Ben la je sais pas trop, je n'ai pratiquement jamais utilisé de DataGrid et elles sont remplacé par des DataGridView en .net2
Tu la remplis bien à partir d'une base de donnée ? Sinon, de quel façon ?

La je sèche un peu, je ne suis pas un spécialiste de ce contrôle.
Repose peut-être la question dans une nouveau post.

__________
  Kenji
0
loic20h28 Messages postés 207 Date d'inscription mardi 19 juin 2007 Statut Membre Dernière intervention 22 février 2016 2
6 juin 2008 à 21:29
Ben je le remplis avec une base de données.

Voici le code, tête que tu va avoir une lueur sinon je posteré un nouveau sujet.

string
Five_Last_Intervention ("SELECT TOP 5 INTERVENTION.IN_NUMINTER as NumInter, CONTACT.CT_NOMCTACT as NomCtact, MACHINE.M_NOMMAT as NomMat FROM INTERVENTION INNER JOIN MACHINE ON INTERVENTION.IN_IDMAT MACHINE.M_IDMAT AND INTERVENTION.IN_NUMCLT = dbo.MACHINE.M_NUMCLT INNER JOIN CONTACT ON MACHINE.M_NUMCTACT = CONTACT.CT_NUMCTACT WHERE INTERVENTION.IN_NUMCLT = '" + NumClt.Text + "' ORDER BY INTERVENTION.IN_NUMINTER DESC");connection =

new SqlConnection("Data Source=xpsp2-49f3e18f9;Initial Catalog=DistribInfo;Integrated Security=SSPI");
connection.Open();

try
{
      SqlDataAdapter dataAdapter =
new SqlDataAdapter(Five_Last_Intervention, connection);
      DataSet ds =
new DataSet();
      dataAdapter.Fill(ds,"Five_Last_Intervention");
      dataGrid1.DataSource = ds;
      dataGrid1.DataMember = "Five_Last_Intervention";
}

catch(Exception ex)
{
      MessageBox.Show(ex.ToString());
}

finally
{
   connection.Close();
}

Cordialement.
0
Utilisateur anonyme
6 juin 2008 à 22:01
J'ai pas eu de lueur poiur ton dernier post mais ca m'a fais revenir un peu plus haut, quelque chose dont je n'avais pas fais assez attention :
Mettre avant de ShowDialog bien sur sinon, ca se fait a la fermeture de la form 2 :

private void Imprimer_Click(object sender, System.EventArgs e)
{
    Form2 F2 = new Form2();
    F2.UpdateValues(NumInter.Text, NomClt.Text);
    F2.dataGrid1.DataSource = this.dataGrid1.DataSource;
    F2.ShowDialog(); 
    <strike>F2.dataGrid1.DataSource = this.dataGrid1.DataSource;</strike>
}

__________
  Kenji
0
loic20h28 Messages postés 207 Date d'inscription mardi 19 juin 2007 Statut Membre Dernière intervention 22 février 2016 2
6 juin 2008 à 22:11
Ok. Ya une amélioration, ca fonctionne sauf  que pour afficher les données du dataGrid je dois cliquer sur un symbol +.

Comment je peux faire pour ne pas avoir ce symbol??

Cordialement.
0
Utilisateur anonyme
6 juin 2008 à 22:23
Copie le DataMember (après avoir copier le DataSource) :
F2.dataGrid1.DataMember =  this.dataGrid1.DataMember;

__________
  Kenji
0
loic20h28 Messages postés 207 Date d'inscription mardi 19 juin 2007 Statut Membre Dernière intervention 22 février 2016 2
6 juin 2008 à 22:25
C cool, jte remerci pour tout, car grâce a toi cela foncitonne parfaitement.

Meric pour out!!

Bonne continuation.

@++
0
Rejoignez-nous