c # Programming file IO automatically scroll to the bottom (supplement)

  Here to do a supplement to the previous article, because many times, we need to step calculate crc value multiple files, but last displayed value often need to enter the eye in the first period. So we need to ensure that the results of the final document must be displayed to the forefront of the UI.

Similarly, we are still using the format: name of the control + ScrollToEnd () function to achieve:

code show as below:

1                 UserInput.ScrollToEnd();
2                 if(UserInput.IsFocused==true)
3                 {
4                     UserInput.SelectionStart = UserInput.Text.Length;
5                 }
View Code

Finally finishing Code:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.IO;

namespace FileSample
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        UInt16 [] crc_table=new UInt16[256]{
        0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7, 
        0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef, 
        0x1231, 0x0210, 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6, 
        0x9339, 0x8318, 0xb37b, 0xa35a, 0xd3bd, 0xc39c, 0xf3ff, 0xe3de, 
        0x2462, 0x3443, 0x0420, 0x1401, 0x64e6, 0x74c7, 0x44a4, 0x5485, 
        0xa56a, 0xb54b, 0x8528, 0x9509, 0xe5ee, 0xf5cf, 0xc5ac, 0xd58d, 
        0x3653, 0x2672, 0x1611, 0x0630, 0x76d7, 0x66f6, 0x5695, 0x46b4, 
        0xb75b, 0xa77a, 0x9719, 0x8738, 0xf7df, 0xe7fe, 0xd79d, 0xc7bc, 
        0x48c4, 0x58e5, 0x6886, 0x78a7, 0x0840, 0x1861, 0x2802, 0x3823, 
        0xc9cc, 0xd9ed, 0xe98e, 0xf9af, 0x8948, 0x9969, 0xa90a, 0xb92b, 
        0x5af5, 0x4ad4, 0x7ab7, 0x6a96, 0x1a71, 0x0a50, 0x3a33, 0x2a12, 
        0xdbfd, 0xcbdc, 0xfbbf, 0xeb9e, 0x9b79, 0x8b58, 0xbb3b, 0xab1a, 
        0x6ca6, 0x7c87, 0x4ce4, 0x5cc5, 0x2c22, 0x3c03, 0x0c60, 0x1c41, 
        0xedae, 0xfd8f, 0xcdec, 0xddcd, 0xad2a, 0xbd0b, 0x8d68, 0x9d49, 
        0x7e97, 0x6eb6, 0x5ed5, 0x4ef4, 0x3e13, 0x2e32, 0x1e51, 0x0e70, 
        0xff9f, 0xefbe, 0xdfdd, 0xcffc, 0xbf1b, 0xaf3a, 0x9f59, 0x8f78, 
        0x9188, 0x81a9, 0xb1ca, 0xa1eb, 0xd10c, 0xc12d, 0xf14e, 0xe16f, 
        0x1080, 0x00a1, 0x30c2, 0x20e3, 0x5004, 0x4025, 0x7046, 0x6067, 
        0x83b9, 0x9398, 0xa3fb, 0xb3da, 0xc33d, 0xd31c, 0xe37f, 0xf35e, 
        0x02b1, 0x1290, 0x22f3, 0x32d2, 0x4235, 0x5214, 0x6277, 0x7256, 
        0xb5ea, 0xa5cb, 0x95a8, 0x8589, 0xf56e, 0xe54f, 0xd52c, 0xc50d, 
        0x34e2, 0x24c3, 0x14a0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405, 
        0xa7db, 0xb7fa, 0x8799, 0x97b8, 0xe75f, 0xf77e, 0xc71d, 0xd73c, 
        0x26d3, 0x36f2, 0x0691, 0x16b0, 0x6657, 0x7676, 0x4615, 0x5634, 
        0xd94c, 0xc96d, 0xf90e, 0xe92f, 0x99c8, 0x89e9, 0xb98a, 0xa9ab, 
        0x5844, 0x4865, 0x7806, 0x6827, 0x18c0, 0x08e1, 0x3882, 0x28a3, 
        0xcb7d, 0xdb5c, 0xeb3f, 0xfb1e, 0x8bf9, 0x9bd8, 0xabbb, 0xbb9a, 
        0x4a75, 0x5a54, 0x6a37, 0x7a16, 0x0af1, 0x1ad0, 0x2ab3, 0x3a92, 
        0xfd2e, 0xed0f, 0xdd6c, 0xcd4d, 0xbdaa, 0xad8b, 0x9de8, 0x8dc9, 
        0x7c26, 0x6c07, 0x5c64, 0x4c45, 0x3ca2, 0x2c83, 0x1ce0, 0x0cc1, 
        0xef1f, 0xff3e, 0xcf5d, 0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8, 
        0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0}; 
        public MainWindow()
        {
            InitializeComponent();
        }
        public UInt16 crc_16(UInt16 crc, byte data)
        {
            byte da;

            da = (byte)(crc / 256);
            crc <<= 8;              //crc=crc*256
            crc ^= crc_table[da ^ data];
            return crc;
        }
        private void open_Click(object sender, RoutedEventArgs e)
        {
            System.Windows.Forms.OpenFileDialog openfile = new System.Windows.Forms.OpenFileDialog();
            UInt16 crc;
            openfile.InitialDirectory = "D:\\";
            openfile.Filter = "txt files |*.txt|All files |*.*";
            openfile.FilterIndex = 1;
            openfile.RestoreDirectory = true;
            if(openfile.ShowDialog()==System.Windows.Forms.DialogResult.OK)
            {
                UserInput.Text += openfile.FileName + "\r\n";
                StreamReader sr = new System.IO.StreamReader(openfile.FileName, Encoding.Default);
                crc = 0xffff;
                while(sr.Peek() > 0)
                {
                    //UserInput.Text += (char)sr.Read();
                    crc = crc_16(crc, (byte)sr.Read());
                }
                UserInput.Text += "crc=" + crc.ToString() + "(Int), " + crc.ToString("X2") + "(Hex)" + "\r\n";
                UserInput.ScrollToEnd();
                if(UserInput.IsFocused==true)
                {
                    UserInput.SelectionStart = UserInput.Text.Length;
                }
            }
        }

        private void TextBox_PreviewDrop(object sender, DragEventArgs e)
        {
            UInt16 crc;
            //get files counter
            Array fileArray = (System.Array)e.Data.GetData(DataFormats.FileDrop);
            string filePath;
            for (int i=0; i < fileArray.Length; i++)
            {
                filePath = ((System.Array)e.Data.GetData(DataFormats.FileDrop)).GetValue(i).ToString();
                UserInput.Text += filePath + "\r\n";
                StreamReader sr=new System.IO.StreamReader(filePath,Encoding.Default);
                crc = 0xffff;
                while(sr.Peek()>0)
                {
                    crc = crc_16(crc, (byte)sr.Read());
                }
                UserInput.Text += "crc=" + crc.ToString() + "(Int), " + crc.ToString("X2") + "(Hex)" + "\r\n";
                UserInput.ScrollToEnd();
                if(UserInput.IsFocused==true)
                {
                    UserInput.SelectionStart = UserInput.Text.Length;
                }
            }
        }

        private void TextBox_PreviewDragOver(object sender, DragEventArgs e)
        {
            if (e.Data.GetDataPresent(DataFormats.FileDrop))
            {
                e.Effects = DragDropEffects.Link;
                e.Handled = true;
            }
            else
                e.Effects = DragDropEffects.None;
        }
    }
}
CS

 

End. Thank you.

Guess you like

Origin www.cnblogs.com/lumao1122-Milolu/p/12658436.html