用波斯语(波斯语)characteres打印datagridview [英] printing datagridview with persian(farsi) characteres
本文介绍了用波斯语(波斯语)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 propertySystem.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屋!
查看全文