TextBox.Text удаляется даже при повторном создании формы - PullRequest
0 голосов
/ 09 июля 2019

Я работал на C # PDA.Недавно я нашел ошибку.

Шаги

Вот шаги по ее воспроизведению:

  1. Введите форму, отсканируйтенекоторые данные.

  2. Закройте форму.

  3. Повторно откройте форму.

  4. При сканировании данных некоторыеПохоже, что TextBox расположен.

Код

Мы создаем форму:

 private void btp1_1_Click(object sender, EventArgs e) {            
            if(AppCore.core.pdaUser.isAuthorizedMovement(Movements.AltaPalet) == false) {
                MessageBox.Show("No estás autorizado para realizar esta operación.");
            } else {
                try{
                    //MessageBox.Show("Funcionalidad en desarrollo. Disculpe las molestias");
                    FormAltaPalet form = new FormAltaPalet(Movements.AltaPalet);
                    form.ShowDialog();
                    form.Dispose();
                }catch(WebException ex){
                    MessageBox.Show("Error técnico. " + ex.Message);
                }
            }
        }

Первая строка формы - InitializeComponent.

  public FormAltaPalet(Movements movement) {

           // GC.Collect();
           // GC.WaitForPendingFinalizers();
            InitializeComponent();
            //clear(FormStep.Step1);
           // this.FinishError(); // FIX MA 08.07.2019
            this.move = movement;
            this.tbp1_1.Focus();
            this.material = "";
            this.ean14 = "";
            context = this;

            // SCANNER
            if (AppCore.core.dispositivo_PDA ) { // BARCODE 2
                myBarcode2 = new Barcode2(Devices.SupportedDevices[0]);
                myBarcode2.Enable();
                myBarcode2.Scan();
                // Register a scan event handler to the barcode object
                myBarcode2.OnScan += new Barcode2.OnScanHandler(myBarcode_OnScan);
            }
        }

Здесь мы создаем текстовые поля и метки.При первом запуске он работает нормально, начинает закрываться и снова открываться.

   private void InitializeComponent()
        {
            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormAltaPalet));
            this.pmm = new System.Windows.Forms.Panel();
            this.bt_mm_2 = new System.Windows.Forms.Button();
            this.bt_mm_1 = new System.Windows.Forms.Button();
            this.p1 = new System.Windows.Forms.Panel();
            this.label_error_1 = new System.Windows.Forms.Label();
            this.btp1_2 = new System.Windows.Forms.Button();
            this.lbp1_6 = new System.Windows.Forms.Label();
            this.tbp1_6 = new System.Windows.Forms.TextBox();
            this.tbp1_4 = new System.Windows.Forms.TextBox();
            this.tbp1_3 = new System.Windows.Forms.TextBox();
            this.tbp1_2 = new System.Windows.Forms.TextBox();
            this.tbp1_1 = new System.Windows.Forms.TextBox();
            this.lbp1_4 = new System.Windows.Forms.Label();
            this.lbp1_3 = new System.Windows.Forms.Label();
            this.lbp1_2 = new System.Windows.Forms.Label();
            this.lbp1_1 = new System.Windows.Forms.Label();
            this.pbp1_1 = new System.Windows.Forms.PictureBox();
            this.pmm.SuspendLayout();
            this.p1.SuspendLayout();
            this.SuspendLayout();

Когда мы достигаем метод в классе, мы получаем текущий контекст:

  void myBarcode_OnScan(ScanDataCollection sd) {
            context = this;
            this.tbp1_1 = getTbl1_1();

Но это неправильно, Объекты, кажется, расположены:

https://imgur.com/bayiySg

РЕДАКТИРОВАТЬ: Когда я нажимаю кнопку, показанную в первом фрагменте кода, форма должна быть создана.Когда я закрываю форму, она должна быть утилизирована.Код метода Dispose таков:

   protected override void Dispose(bool disposing)
    {
        if (disposing && (components != null))
        {
            components.Dispose();
        }
        base.Dispose(disposing);
    }

Кажется, компонент Initialize хорошо работает и во втором запуске, но когда он достигает метода сканирования, TextBoxs удаляются .... Вопрос

Я довольно новичок в разработке C #, так что я немного растерялся.

Я думаю, что что-то происходит с частью Dispose.

В любом случаечтобы решить эту проблему?

Спасибо!

...