日期:2014-05-20  浏览次数:20918 次

请问如何将一个string类型的参数传递给OnPaint函数呢?谢谢大家!
程序的一部分如下:
                private   void   fileListBox1_SelectedIndexChanged(object   sender,   EventArgs   e)
                {
                        int   Index   =   fileListBox1.SelectedIndex;
                        string   filename   =   fileListBox1.get_Items(Index);                        
                }

                protected   override   void   OnPaint(PaintEventArgs   e)
                {                      
                        StreamReader   sr   =   new   StreamReader(filename,   Encoding.Default);
                        ……………………
                }

就是想把string   filename   =   fileListBox1.get_Items(Index)里面的filename传递给OnPaint里面的new   StreamReader(filename,   Encoding.Default)中的filename。
谢谢大家:)

------解决方案--------------------

直接
protected override void OnPaint(PaintEventArgs e)
{
int Index = fileListBox1.SelectedIndex;
string filename = fileListBox1.get_Items(Index);
StreamReader sr = new StreamReader(filename, Encoding.Default);
……………………
}

------解决方案--------------------
确认你的逻辑。

首先是读取文件用于呈现。
读取文件监控文本框的变化。

那么设计如下:
一个读取文件的方法,监听文本框的变化,然后将文件内容读出,存入某个字段中,重绘自己,将在字段中的文件内容绘制。
------解决方案--------------------
private string m_filename = String.Empty;

private string FileName
{
set{
if (m_filename != value)
{
m_filename = value;
OnFileNameChanged();
}
}
}

protected void OnFileNameChanged()
{
this.Invalidate();
}

private void fileListBox1_SelectedIndexChanged(object sender, EventArgs e)
{
int Index = fileListBox1.SelectedIndex;
FileName = fileListBox1.get_Items(Index);
}

protected override void OnPaint(PaintEventArgs e)
{
if (m_filename != null && m_filename == String.Empty)
{
StreamReader sr = new StreamReader(filename, Encoding.Default);
……………………
}
}