【问题标题】:check if textbox has changed since button press检查自按钮按下后文本框是否已更改
【发布时间】:2014-11-27 21:52:00
【问题描述】:

我有一个带有查询的文本框,用户可以加载和更改或不理会它。我有一个测试数据库,用户使用开发测试按钮将其发送到该数据库。结果以 XML 格式显示在另一个表单文本框中。

有没有办法检查用户在按下开发按钮后是否更改了文本框中的任何内容?我有另一个名为生产的按钮,如果返回给用户的结果是正确的,用户可以将此查询保存到生产数据库。

我要防止的是用户加载一个措辞正确的查询,对其进行测试,结果很好,然后用户更改了某些内容,无论是偶然还是故意使该查询不再有效,并将其提交给生产。到那时就会有错误,必须找到并改变事情。我想要一个小消息框,上面写着:“文本框在您测试后已更改,您确定要将其提交到生产环境”。现在他们仍然可以提交,但至少他们被警告了..

【问题讨论】:

  • 什么样的文本框?窗体? WPF? ASP?
  • 当结果从 dev 返回时,您不能只将查询保存到局部变量,然后将其用于生产吗?例如button.Enabled = lastQuery == textbox.Text
  • 或者将上传到生产的按钮放在表示查询有效的消息上。
  • 如果 javascript 可访问,您可以绑定 on("change") 并设置隐藏字段。如果它是winforms,那么事件可能同样适用。否则,只需将其内容的哈希存储起来,并在重新提交时重新哈希/比较。
  • 将 bool 设置为 false|true,然后为 Text.Changed 附加一个事件句柄,如果 Text.Changed 发生,则标记该位,然后禁用将其保存到数据库直到它被验证。验证从测试数据库成功返回。允许人们开发测试查询然后如果它们没有失败,将它们保存到生产中,这似乎也是一个糟糕的设计。如果没有博学的眼光,任何东西都不应进入生产阶段。

标签: c# sql winforms textbox


【解决方案1】:

假设在某个时候按下按钮或发生了某些动作。

1) 当你加载盒子时,你可以将原始值保存在一个变量中 2)当动作发生时,您可以重新查询相同的查询并进行另一次往返以检索原始值 3)然后将原始值与当前值进行比较

  if (textBox.Text == myOriginalValue)
  {
  }
  else
  {
  }

【讨论】:

    【解决方案2】:

    您可以订阅TextChanged 事件,然后更新您的字段。

    textbox.TextChanged += (sender, e) => { textValue = textbox.Text; };
    

    【讨论】:

      【解决方案3】:

      在 Tag 属性中设置脏标志并检查它。

      //Set 1 in the Tag property after loading data
      private void LoadData()
      {
          textBox1.Text = myValue;
          textBox1.Tag = 0;
      }
      
      //Set 0 in the Tag property on TextChange
      private void textBox1_TextChange(object sender, EventArgs)
      {
          ((TextBox)sender).Tag = 1;
      }
      
      //Check if Tag != 0 then do your stuff.
      private void button1_click(object sender, EventArgs e)
      {
          if (textBox1.Tag != null && Convert.ToInt32(textBox1.Tag) != 0)
          {
               MessageBox.Show("The text box has been changed since you tested it are you sure you want to submit this to production", "Value Has Changed");
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2013-10-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-02-03
        • 2014-11-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多