【发布时间】:2015-08-03 07:17:21
【问题描述】:
又是我,遇到了一个奇怪的问题。我创建了一个读取 xml 文件的代码,并使用 g.Drawstring 函数将排序后的 xml 文本发送到 pictureBox1。所以我进步了,使图片框可滚动并注意到了这个问题。当pictureBox 中的文本离开屏幕(不可见)时,当我滚动回它时,它就不再存在了。如果我只是将我的应用程序拖出屏幕,也会发生同样的情况,这样文本就会消失,文本会被删除,但是如果我再次加载我的程序(再次浏览 xml 文件)它会刷新,但这无济于事,因为我需要使文本始终存在。 这是我的代码的一部分,希望对您有所帮助:
private void DrawInPictureBox(int index)
{
pictureBox1.Refresh();
using (XmlReader reader = XmlReader.Create(openFileDialog1.FileNames.ElementAt(index)))
{
y = 0;
while (reader.Read())
{
if (reader.IsStartElement())
{
if (reader.Name == "Something")
{
string Dat = reader.GetAttribute("Dat");
Graphics g = pictureBox1.CreateGraphics();
if (reader.Read())
{
string m = reader.Value.Trim();
g.DrawString(m, new Font("Arial", 10), Brushes.Black, 0, y * 15 + 20);
g.DrawString(Dat + "ok", new Font("Arial", 10), Brushes.Black, 150, y * 15 + 20);
y = y + 1;
}}}}}}
pictureBox 下面有一个面板,所以它是可滚动的,但即使没有面板,当离开屏幕时文本也会被删除。
谢谢!
【问题讨论】:
-
另外,如果你能告诉我如何使用图片框来适应 xml 导入的字符串,那将很有用,所以它不是很大,你不能滚动 2 行文本到超越。 :)
-
您可以使用
Graphics.MeasureString或TextRenderer.MeasureText测量字符串
标签: c# visual-studio xmlreader