2014-11-05 7 views
-3

Я пытаюсь напечатать переменную с указанным шрифтом, но строка равна нулю, поэтому на выходе ничего не видно. пожалуйста, пройти через код и помочь мне найти ошибкуНе удалось получить доступ к общедоступной переменной в производном классе

class BasicClass 
{ 
    public string str; 
    public Font fnt; 
} 
class BasicMethod:BasicClass 
{ 
    public void changevalues(string newstr,Font newfnt) 
    { 
     str = newstr; 
     fnt = newfnt; 
    } 
} 
class PrintClass:BasicClass 
{ 
    public void print() 
    { 

     PrintDialog pd = new PrintDialog(); 
     PrintDocument pdoc = new PrintDocument(); 
     PrinterSettings ps = new PrinterSettings(); 
     PaperSize psize = new PaperSize(); 
     pdoc.DefaultPageSettings.Landscape = true; 
     pd.Document = pdoc; 
     pd.Document.DefaultPageSettings.PaperSize = psize; 
     pdoc.PrintPage += new PrintPageEventHandler(pdoc_PrintPage); 

     DialogResult result = pd.ShowDialog(); 
     if (result == DialogResult.OK) 
     { 
      PrintPreviewDialog ppd = new PrintPreviewDialog(); 
      ppd.Document = pdoc; 
      ppd.PrintPreviewControl.Zoom = 1.5; 
      ((Form)ppd).WindowState = FormWindowState.Maximized; 
      DialogResult ppdResult = ppd.ShowDialog(); 

     } 
    } 
    void pdoc_PrintPage(object sender, PrintPageEventArgs e) 
    { 
     Graphics g = e.Graphics; 
     //string str1 = "XYZ"; 
     //Font fnt1 = new Font("Arial", 12.5f);    
     g.DrawString(str, fnt, new SolidBrush(Color.Black), 10, 10); 

    } 

} 

Кнопка Нажмите событие

private void button1_Click(object sender, EventArgs e) 
    { 
     BasicMethod bm = new BasicMethod(); 
     PrintClass pc = new PrintClass(); 
     Font ft = new System.Drawing.Font("Arial", 12.5f); 
     bm.changevalues("Hello", ft); 
     pc.print(); 

    } 

мне нужно, чтобы получить выход Hello

+1

поздравлений по поиску ответ! Вы должны перейти к своему предыдущему вопросу и добавить ответ, связанный с ответом на этой странице. –

ответ

3

Вы устанавливаете значения, которые вы хотите в полностью другой объект из того, где вы пытаетесь их использовать.

Один из способов исправить это:

Изменения PrintClass так, что он наследует BasicMethod класса вместо BasicClass

class PrintClass : BasicMethod 

Затем измените обработчик щелчка:

private void button1_Click(object sender, EventArgs e) 
{ 
    PrintClass pc = new PrintClass(); 
    Font ft = new System.Drawing.Font("Arial", 12.5f); 
    pc.changevalues("Hello", ft); 
    pc.print(); 
} 
Смежные вопросы