用波斯语(波斯语)characteres打印datagridview [英] printing datagridview with persian(farsi) characteres

查看:161
本文介绍了用波斯语(波斯语)characteres打印datagridview的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述


我在WindowsFormsApplication中创建项目。



我有DataGridview,我可以用英文字符打印所有行



所有的事情都是正确的。当我想用波斯语字符打印时,单词就会反转



如何解决这个问题问题



我的背后代码



Hi I create project in WindowsFormsApplication.

I have DataGridview and I can print all rows it with English characters

all of thing are right.Buy when I want to print it with Persian characters, words became reverse

How can I solve this problem

My Behind code

private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
    int i = 0;
    int width = 0;
    int height = 0;
    int x = 0;
    int y = 0;
    int rowheight = 0;
    int columnwidth = 0;

    float right = e.MarginBounds.Right;

    DataView dv = new DataView();
   StringFormat str = new StringFormat();


   DataTable dt = new DataTable();

    str.FormatFlags = StringFormatFlags.DirectionRightToLeft;
    str.Alignment = StringAlignment.Near;
    str.LineAlignment = StringAlignment.Center;
    str.Trimming = StringTrimming.EllipsisCharacter;

    FontStyle fs = new FontStyle();

    Pen p = new Pen(Color.Black,2.5f);





    e.Graphics.FillRectangle(Brushes.LightGray, new Rectangle(100, 100, dataGridView1.Columns[0].Width, dataGridView1.Rows[0].Height));
    e.Graphics.DrawRectangle(Pens.Black, 100, 100, dataGridView1.Columns[0].Width, dataGridView1.Rows[0].Height);
    e.Graphics.DrawString(dataGridView1.Columns[0].HeaderText, dataGridView1.Font, Brushes.Black, new RectangleF(100, 100 ,dataGridView1.Columns[0].Width, dataGridView1.Rows[0].Height), str);




    e.Graphics.FillRectangle(Brushes.LightGray, new Rectangle(200, 100, dataGridView1.Columns[0].Width, dataGridView1.Rows[0].Height));
    e.Graphics.DrawRectangle(Pens.Black, 200, 100, dataGridView1.Columns[0].Width, dataGridView1.Rows[0].Height);
    e.Graphics.DrawString(dataGridView1.Columns[1].HeaderText, dataGridView1.Font, Brushes.Black, new RectangleF(200, 100, dataGridView1.Columns[0].Width, dataGridView1.Rows[0].Height), str);


    e.Graphics.FillRectangle(Brushes.LightGray, new Rectangle(300, 100, dataGridView1.Columns[0].Width, dataGridView1.Rows[0].Height));
    e.Graphics.DrawRectangle(Pens.Black, 300, 100, dataGridView1.Columns[0].Width, dataGridView1.Rows[0].Height);


    e.Graphics.DrawString(dataGridView1.Columns[2].HeaderText, dataGridView1.Font, Brushes.Black, new RectangleF(300, 100, dataGridView1.Columns[0].Width, dataGridView1.Rows[0].Height), str);

    width = 100 + dataGridView1.Columns[0].Width;
    height = 100;
    while (i < dataGridView1.Rows.Count)
    {

        if (height > e.MarginBounds.Height)
        {
            height = 100;
            width = 100;
            e.HasMorePages = true;
            return;
        }



        height += dataGridView1.Rows[i].Height;
        e.Graphics.DrawRectangle(Pens.Black, 100, height, dataGridView1.Columns[0].Width, dataGridView1.Rows[0].Height);
        e.Graphics.DrawString(dataGridView1.Rows[i].Cells[0].FormattedValue.ToString(), dataGridView1.Font, Brushes.Black, new RectangleF(100, height, dataGridView1.Columns[0].Width, dataGridView1.Rows[0].Height), str);

        e.Graphics.DrawRectangle(Pens.Black, 100 + dataGridView1.Columns[1].Width, height, dataGridView1.Columns[0].Width, dataGridView1.Rows[0].Height);
        e.Graphics.DrawString(dataGridView1.Rows[i].Cells[1].FormattedValue.ToString(), dataGridView1.Font, Brushes.Black, new RectangleF(100 + dataGridView1.Columns[0].Width, height, dataGridView1.Columns[0].Width, dataGridView1.Rows[0].Height), str);



        e.Graphics.DrawRectangle(Pens.Black, 200 + dataGridView1.Columns[2].Width, height, dataGridView1.Columns[0].Width, dataGridView1.Rows[0].Height);
      e.Graphics.DrawString(dataGridView1.Rows[i].Cells[2].FormattedValue.ToString(), dataGridView1.Font, Brushes.Black, new RectangleF(200 + dataGridView1.Columns[0].Width, height, dataGridView1.Columns[0].Width, dataGridView1.Rows[0].Height), str);

        width += dataGridView1.Columns[0].Width;
        i++;
    }
}

private void button1_Click(object sender, EventArgs e)
{

    printPreviewDialog1.Document = printDocument1;
    printPreviewDialog1.ShowDialog();

}

推荐答案

通过应用属性修复它系统.Windows.Forms.Control.RightToLeft

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.righttoleft%28v=vs.110%29。 aspx [ ^ ]。



-SA
Fix it by applying the property System.Windows.Forms.Control.RightToLeft:
http://msdn.microsoft.com/en-us/library/system.windows.forms.control.righttoleft%28v=vs.110%29.aspx[^].

—SA


这篇关于用波斯语(波斯语)characteres打印datagridview的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆