public PracticalFileAutograph(PracticalFile practicalFile)
        {
            InitializeComponent();

            if (!this.IsInDesignMode())
            {
                container.SetBinding(Panel.DataContextProperty, new Binding(".")
                {
                    Source = practicalFile
                });
            }
        }
示例#2
0
 private void OpenFileDialogExecuted(object sender, ExecutedRoutedEventArgs e)
 {
     System.Windows.Forms.OpenFileDialog ofd = new System.Windows.Forms.OpenFileDialog();
     ofd.Filter      = "Excel文件|*.xls";
     ofd.Multiselect = true;
     if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
     {
         for (int i = 0; i < ofd.FileNames.Length; i++)
         {
             PracticalFile file = new PracticalFile();
             file.Path   = ofd.FileNames[i];
             file.Name   = System.IO.Path.GetFileNameWithoutExtension(ofd.FileNames[i]);
             file.Index  = files.Count;
             file.IsLast = i == ofd.FileNames.Length - 1;
             files.Add(file);
         }
     }
     ofd.Dispose();
 }
示例#3
0
        private void LoadPractical(string practicalFilePath)
        {
            FileStream fs = null;

            byte[]          buffer = null;
            PracticalFile[] items  = null;
            int[]           practicalProjectCountArray = null;
            int[][]         practicalProjectContentBufferLengthArray = null;
            int[][]         practicalProjectF1BufferLengthArray      = null;
            int[]           practicalProjectF2BufferLengthArray      = null;
            int[]           practicalNameBufferLength    = null;
            int[]           practicalAutographCount      = null;
            long[]          practicalContentBufferLength = null;

            try
            {
                fs     = new FileStream(practicalFilePath, FileMode.Open, FileAccess.Read);
                buffer = new byte[sizeof(int)];
                fs.Read(buffer, 0, buffer.Length);
                items = new PracticalFile[BitConverter.ToInt32(buffer, 0)];
                practicalProjectCountArray = new int[items.Length];
                practicalProjectContentBufferLengthArray = new int[items.Length][];
                practicalProjectF1BufferLengthArray      = new int[items.Length][];
                practicalProjectF2BufferLengthArray      = new int[items.Length];
                practicalNameBufferLength    = new int[items.Length];
                practicalAutographCount      = new int[items.Length];
                practicalContentBufferLength = new long[items.Length];

                for (int i = 0; i < items.Length; i++)
                {
                    items[i] = new PracticalFile();
                }

                for (int i = 0; i < items.Length; i++)
                {
                    buffer = new byte[sizeof(int)];
                    fs.Read(buffer, 0, buffer.Length);
                    practicalAutographCount[i] = BitConverter.ToInt32(buffer, 0);
                }

                for (int i = 0; i < items.Length; i++)
                {
                    buffer = new byte[sizeof(int)];
                    fs.Read(buffer, 0, buffer.Length);
                    practicalProjectCountArray[i] = BitConverter.ToInt32(buffer, 0);
                    practicalProjectContentBufferLengthArray[i] = new int[practicalProjectCountArray[i]];
                    practicalProjectF1BufferLengthArray[i]      = new int[practicalProjectCountArray[i]];
                }
                for (int i = 0; i < items.Length; i++)
                {
                    for (int j = 0; j < practicalProjectCountArray[i]; j++)
                    {
                        PracticalProject project = new PracticalProject();
                        project.Index = j;
                        items[i].Projects.Add(project);
                    }
                }
                for (int i = 0; i < items.Length; i++)
                {
                    for (int j = 0; j < practicalProjectCountArray[i]; j++)
                    {
                        buffer = new byte[sizeof(int)];
                        fs.Read(buffer, 0, buffer.Length);
                        practicalProjectContentBufferLengthArray[i][j] = BitConverter.ToInt32(buffer, 0);
                    }
                }
                for (int i = 0; i < items.Length; i++)
                {
                    for (int j = 0; j < practicalProjectCountArray[i]; j++)
                    {
                        buffer = new byte[sizeof(int)];
                        fs.Read(buffer, 0, buffer.Length);
                        practicalProjectF1BufferLengthArray[i][j] = BitConverter.ToInt32(buffer, 0);
                    }
                }
                for (int i = 0; i < items.Length; i++)
                {
                    buffer = new byte[sizeof(int)];
                    fs.Read(buffer, 0, buffer.Length);
                    practicalProjectF2BufferLengthArray[i] = BitConverter.ToInt32(buffer, 0);
                }
                for (int i = 0; i < items.Length; i++)
                {
                    buffer = new byte[sizeof(int)];
                    fs.Read(buffer, 0, buffer.Length);
                    practicalNameBufferLength[i] = BitConverter.ToInt32(buffer, 0);
                }
                for (int i = 0; i < items.Length; i++)
                {
                    buffer = new byte[sizeof(long)];
                    fs.Read(buffer, 0, buffer.Length);
                    practicalContentBufferLength[i] = BitConverter.ToInt64(buffer, 0);
                }
                for (int i = 0; i < items.Length; i++)
                {
                    for (int j = 0; j < practicalProjectCountArray[i]; j++)
                    {
                        buffer = new byte[practicalProjectContentBufferLengthArray[i][j]];
                        fs.Read(buffer, 0, buffer.Length);
                        items[i].Projects[j].Content = UTF8Encoding.UTF8.GetString(buffer);
                    }
                }
                for (int i = 0; i < items.Length; i++)
                {
                    for (int j = 0; j < practicalProjectCountArray[i]; j++)
                    {
                        buffer = new byte[practicalProjectF1BufferLengthArray[i][j]];
                        fs.Read(buffer, 0, buffer.Length);
                        items[i].Projects[j].HelperText = UTF8Encoding.UTF8.GetString(buffer);
                    }
                }
                for (int i = 0; i < items.Length; i++)
                {
                    buffer = new byte[practicalProjectF2BufferLengthArray[i]];
                    fs.Read(buffer, 0, buffer.Length);
                    items[i].HelperText = UTF8Encoding.UTF8.GetString(buffer);
                }
                for (int i = 0; i < items.Length; i++)
                {
                    for (int j = 0; j < practicalAutographCount[i]; j++)
                    {
                        Autograph autograph = new Autograph();
                        buffer = new byte[sizeof(int)];
                        fs.Read(buffer, 0, buffer.Length);
                        buffer = new byte[BitConverter.ToInt32(buffer, 0)];
                        fs.Read(buffer, 0, buffer.Length);
                        autograph.SheetName = UTF8Encoding.UTF8.GetString(buffer);
                        buffer = new byte[sizeof(int)];
                        fs.Read(buffer, 0, buffer.Length);
                        autograph.RowIndex = BitConverter.ToInt32(buffer, 0);
                        buffer             = new byte[sizeof(int)];
                        fs.Read(buffer, 0, buffer.Length);
                        autograph.ColIndex = BitConverter.ToInt32(buffer, 0);
                        items[i].Autographs.Add(autograph);
                    }
                }
                for (int i = 0; i < items.Length; i++)
                {
                    buffer = new byte[practicalNameBufferLength[i]];
                    fs.Read(buffer, 0, buffer.Length);
                    items[i].Index = i;
                    items[i].Name  = UTF8Encoding.UTF8.GetString(buffer);
                    items[i].Path  = System.IO.Path.Combine(loadPracticalFileFolder, items[i].Name + ".xls");

                    for (int j = 0; j < practicalProjectCountArray[i]; j++)
                    {
                        items[i].Projects[j].PracticalName = items[i].Name;
                    }
                }
                for (int i = 0; i < items.Length; i++)
                {
                    FileStream writeFs = null;
                    try
                    {
                        writeFs = new FileStream(items[i].Path, FileMode.Create, FileAccess.Write);
                        while (writeFs.Length != practicalContentBufferLength[i])
                        {
                            buffer = new byte[practicalContentBufferLength[i] - writeFs.Length > BUFFER_PACKAGE_LENGTH ? BUFFER_PACKAGE_LENGTH : practicalContentBufferLength[i] - writeFs.Length];
                            fs.Read(buffer, 0, buffer.Length);
                            writeFs.Write(buffer, 0, buffer.Length);
                        }
                    }
                    catch
                    {
                        throw;
                    }
                    finally
                    {
                        if (writeFs != null)
                        {
                            writeFs.Dispose();
                        }
                    }
                }

                for (int i = 0; i < items.Length; i++)
                {
                    files.Add(items[i]);
                }
            }
            catch
            {
                throw new Exception("题库加载错误。");
            }
            finally
            {
                if (fs != null)
                {
                    fs.Dispose();
                }
            }
        }