我做的是添加功能,这是在picturebox的click事件代码:            openFileDialog1.Filter = "(*.JPG)|*.JPG|(*.GIF)|*.GIF|(*.BMP)|*.BMP";
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                path = openFileDialog1.FileName;
            }
            try
            {
                Image im;
                im = (System.Drawing.Image)Image.FromFile(path, false).Clone();
                Bitmap bt = new Bitmap(im);
                picphoto.Image = bt;
                im.Dispose();
            }
            catch (Exception ee)
            {            }在添加按钮的事件中把path赋给属性(etemp.photo = path;),在数据访问层中的代码:                FileStream fs = new FileStream(emp.photo, FileMode.Open);
                byte[] imagebyte = new byte[emp.photo.Length];
                BinaryReader br = new BinaryReader(fs);
                imagebyte = br.ReadBytes(Convert.ToInt32(fs.Length));
                DataRow dr = dtb.NewRow();
               dr["照片"] = imagebyte;程序在 FileStream fs = new FileStream(emp.photo, FileMode.Open);这里报错,说文件“XXXXXXX”正由另一进程使用,因此该进程无法访问该文件。
请问各位这该怎么解决啊?

解决方案 »

  1.   

    //读取图片
     private byte[] MyData;        private void photoPictureBox_DoubleClick(object sender, EventArgs e)
            {
                OpenFileDialog openfile = new OpenFileDialog();
                String dir = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
                openfile.InitialDirectory = dir;
                openfile.Filter = "JPEG/JPG (*.jpg)|*.jpg| BMP | *.bmp| PNG |*.png|All Files|*.*";
                if (openfile.ShowDialog() == DialogResult.OK)
                {
                    try
                    {
                        photoPictureBox.Image = System.Drawing.Image.FromFile(openfile.FileName);
                    }
                    catch
                    {
                        ErrorMessage.selectPhotoError();
                    }
                    FileStream fs = new FileStream(openfile.FileName, FileMode.OpenOrCreate, FileAccess.Read);                MyData = new byte[fs.Length];
                    fs.Read(MyData, 0, System.Convert.ToInt32(fs.Length));                fs.Close();
                }
            }