Пример #1
0
 public void RefreshVisualZoneLayout()
 {
     try
     {
         VisualScrollBar.Value = 0;
         mVisualZone.ZoneSize  = VisualPanel.Size;
         VisualRow.ROW_SIZE    = new Size(mVisualZone.ZoneSize.Width, 9);
         DataMaster.CalculateBlockPerRowBytesAmountAllowed();
         mVisualZone.PrepareRowsLayout();
     }
     catch
     {
     }
 }
Пример #2
0
        public void RefreshVisualZoneData()
        {
            try
            {
                VisualPanel.Refresh();
                if (!DataZoneKeepEmpty)
                {
                    Graphics g             = VisualPanel.CreateGraphics();
                    int[]    bytes_indexes = DataMaster.GetBytesStartEndIndexes(mVisualZone.StartRowNumber, mVisualZone.StartRowNumber + mVisualZone.VisualRowsAmount - 1);
                    mVisualZone.DrawVisualZone(ref g, mDataMaster.PickOutVisualBytes(bytes_indexes));
                }

                ReDrawBlockAddress();
                RefreshScrollBarValues();
                DataZoneKeepEmpty = false;
            }
            catch
            {
            }
        }
Пример #3
0
        /// <summary>
        /// 将输入的数据从输入的行号的起始位置开始逐个写入数据
        /// 写入方式为:1. 当相对索引值小于当前行的容量时,采用覆盖的方式;
        ///             2. 当相对于索引值大于或等于当前行的容量时,采用嵌入的方式。
        /// </summary>
        /// <param name="inBytes"></param>
        /// <param name="inRowNumber"></param>
        private void RefreshBytesIntoBaseEditData(byte[] inBytes, int inRowNumber)
        {
            try
            {
                int row_capacity = mVisualZone.GetCurrentRowBytesAllowed(inRowNumber);
                int start_index  = DataMaster.GetRowStartByteIndex(inRowNumber);
                for (int i = 0; i < inBytes.Length; i++)
                {
                    if (i < row_capacity)
                    {
                        /*
                         * if (inBytes[i] == DataMaster.DEFAULT_NULL_BYTE_ANOTHER_BYTE)
                         * {
                         *  if (i < mRawEditTextBoxBytes.Length && mRawEditTextBoxBytes[i] == 0x00)
                         *     continue;
                         * }
                         * */

                        if (i + start_index < mDataMaster.EditeBytesLength)
                        {
                            mDataMaster.ReplaceByte(inBytes[i], start_index + i);
                        }
                        else
                        {
                            mDataMaster.AddByte(inBytes[i]);
                        }
                    }
                    else
                    {
                        mDataMaster.InsertByte(inBytes[i], start_index + i);
                    }
                }
                if (inBytes.Length > row_capacity && selectedIndex >= EditeTextBox.Text.Length - 2)
                {
                    switch (mVisualZone.CurrentDataFormat)
                    {
                    case VisualZone.DataFormat.HEX:
                        SelectedRowNumber++;
                        if (SelectedRowNumber >= (mVisualZone.StartRowNumber + mVisualZone.VisualRowsAmount - 1))
                        {
                            VisualScrollBar.Value += (SelectedRowNumber - mVisualZone.StartRowNumber - mVisualZone.VisualRowsAmount + 1);
                        }

                        RefreshEditTextBoxLocation(SelectedRowNumber);
                        selectedIndex = 2;
                        break;

                    case VisualZone.DataFormat.ASCII:
                        if (selectedIndex >= EditeTextBox.Text.Length)
                        {
                            SelectedRowNumber++;
                            if (SelectedRowNumber >= (mVisualZone.StartRowNumber + mVisualZone.VisualRowsAmount - 1))
                            {
                                VisualScrollBar.Value += (SelectedRowNumber - mVisualZone.StartRowNumber - mVisualZone.VisualRowsAmount + 1);
                            }
                            selectedIndex = 1;
                            RefreshEditTextBoxLocation(SelectedRowNumber);
                        }
                        break;

                    case VisualZone.DataFormat.DEC:    //2017/07/20 十进制
                        SelectedRowNumber++;
                        if (SelectedRowNumber >= (mVisualZone.StartRowNumber + mVisualZone.VisualRowsAmount - 1))
                        {
                            VisualScrollBar.Value += (SelectedRowNumber - mVisualZone.StartRowNumber - mVisualZone.VisualRowsAmount + 1);
                        }

                        RefreshEditTextBoxLocation(SelectedRowNumber);
                        selectedIndex = 3;
                        break;
                    }
                }
                else if (inBytes.Length < row_capacity)
                {
                    int difference = row_capacity - inBytes.Length;
                    for (int i = 0; i < difference; i++)
                    {
                        if ((start_index + inBytes.Length) < mDataMaster.EditeBytesLength)
                        {
                            mDataMaster.RemoveByte(start_index + inBytes.Length);
                        }
                    }
                }
            }
            catch
            {
            }
        }
Пример #4
0
        private void getBaseDataForSelectedRow(int inRowNumber)
        {
            try
            {
                IsInitializeEditText = true;

                int[]        indexes = DataMaster.GetBytesStartEndIndexes(inRowNumber, inRowNumber);
                VisualByte[] bytes   = mDataMaster.PickOutVisualBytes(indexes);
                byte[]       datas   = new byte[bytes.Length];
                LastEditBytesAmount = datas.Length;
                bool isContain87 = false;
                for (int i = 0; i < bytes.Length; i++)
                {
                    datas[i] = bytes[i].ByteValue;

                    if (datas[i] == DataMaster.DEFAULT_NULL_BYTE_ANOTHER_BYTE)
                    {
                        isContain87 = true;
                    }
                }
                mRawEditTextBoxBytes = datas;
                switch (mVisualZone.CurrentDataFormat)
                {
                case VisualZone.DataFormat.ASCII:
                    string text = ConvertBytesToString(datas);
                    if (!isContain87)
                    {
                        if (EditeTextBox.Text != text)
                        {
                            EditeTextBox.Text = text;
                        }
                        else
                        {
                            IsInitializeEditText = false;
                        }
                        EditeTextBox.SelectionStart = selectedIndex;
                    }
                    else
                    {
                        EditeTextBox.Visible = false;
                        RefreshVisualZoneData();
                        mWarningForm.Visible = true;
                    }
                    break;

                case VisualZone.DataFormat.HEX:
                    text = "";
                    for (int i = 0; i < datas.Length; i++)
                    {
                        byte[] oneByte = new byte[1] {
                            datas[i]
                        };
                        if (i != datas.Length - 1)
                        {
                            text += BitConverter.ToString(oneByte) + "  ";
                        }
                        else
                        {
                            text += BitConverter.ToString(oneByte);
                        }
                    }
                    if (EditeTextBox.Text != text)
                    {
                        EditeTextBox.Text = text;
                    }
                    else
                    {
                        EditeTextBox.Text = text + " ";
                    }
                    break;

                case VisualZone.DataFormat.DEC:
                    text = "";
                    for (int i = 0; i < datas.Length; i++)
                    {
                        if (i != datas.Length - 1)
                        {
                            text += datas[i].ToString("d3") + " ";
                        }
                        else
                        {
                            text += datas[i].ToString("d3");
                        }
                    }

                    if (EditeTextBox.Text != text)
                    {
                        EditeTextBox.Text = text;
                    }
                    else
                    {
                        EditeTextBox.Text = text + " ";
                    }
                    break;
                }
            }
            catch
            {
            }
        }