【问题标题】:Clearing NumericUpDown清除 NumericUpDown
【发布时间】:2014-02-17 14:05:03
【问题描述】:

我对 NumericUpDown 控件的问题是当用户从 NumericUpDown 中选择一个值并取消选中 checkBox1 并单击“保存”按钮时,NumericUpDown 的值未清除:

 Public Class FormAdd


Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Me.StudenttableBindingSource.AddNew()
End Sub

Private Sub BttnSave_Click(sender As Object, e As EventArgs) Handles BttnSave.Click

    Me.StudenttableBindingSource.EndEdit()
    Me.StudenttableTableAdapter.Update(Me.StudentDataSet.studenttable)
    Me.StudenttableTableAdapter.Fill(Me.StudentDataSet.studenttable)
    MsgBox(" Student Saveed", MsgBoxStyle.Information)
    Me.StudenttableTableAdapter.Fill(Main.StudentDataSet.studenttable)
    Me.Close()
End Sub

Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged
    If CheckBox1.Checked = False Then
        AgeNumericUpDown.Value = AgeNumericUpDown.Minimum
        AgeNumericUpDown.Text = ""
    End If
End Sub

如果用户选择一个值并取消选中 AgeNumericUpDown 的 CheckBox1 值以重置为空字符串,我需要。

图解:

【问题讨论】:

  • 之前您说过希望在单击保存按钮时该值为空,而您的代码显示您希望在更改复选框的检查时该值为空!?
  • 您的问题确实与 NumericUpDown 控件无关。尝试重新措辞您的问题,以专注于您尝试解决的 DataGridView 问题。哦,另外,请不要将句子中每个单词的首字母大写。
  • CheckBox1_CheckedChanged 之后没有更新任何表,您只是在加载相同的数据,除了更改 NumericUpDown 中的值之外没有进行任何编辑

标签: vb.net winforms numericupdown


【解决方案1】:

访问NumericUpDown的文本控件,然后将文本设置为空白

Private Sub CheckBox1_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles CheckBox1.CheckedChanged

    If CheckBox1.Checked = False Then
        AgeNumericUpDown.Controls.Item(1).Text = ""
    End If

End Sub

【讨论】:

  • 感谢重播,但它不起作用.. 示例我选择 15 并取消选中 CheckBox1 并单击保存.. 我在 Datagridview = 15 上找到了 Age Coulmn
  • 如果您使用来自DatagridView 的Checkboxs,那么您需要触发CurrentCellDirtyStateChanged 事件。见msdn.microsoft.com/en-us/library/…
  • 我知道当我取消选中 CheckBox1 时,AgeNumericUpDown 值已被删除,但问题是当单击 Save The Coulm Age In Datagridview 显示所选值示例我选择 15 并取消选中 CheckBox1 并单击 Save .. 我发现Datagridview 上的年龄库 = 15
  • 我不明白。在CheckBox 更改后,您没有向DataGridView 发送任何信息,那么DataGridView 将如何更改
【解决方案2】:

NumericUpDown 不包含字符串。它具有数字的价值。所以应该是:

Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged
      If CheckBox1.Checked = False Then
            AgeNumericUpDown.Value = 0
      End If
End Sub

编辑:

如果您不希望该值为零但为空,请检查一下!

 Private Sub BttnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BttnSave.Click
    If AgeNumericUpDown.Value <> 0 Then
        AgeNumericUpDown.Controls(1).Text = ""
    End If
End Sub

【讨论】:

  • 感谢重播,但我不需要将值设为“0”,我希望它为空
  • 我已经编辑了我的答案。希望你能解决你的问题!
【解决方案3】:

我使用的是不带微调器的 NumericUpDown 控件,因为我只需要数字。该控件位于从列表视图选择调用的子对话框中。当要加载到 NumericUpDown 控件的值在列表视图中为零时,控件中的值为零。那个零总是必须被清除。这就是我如何使它“显示”为空白。如果它为零,我将控件的 ForeColor 更改为白色。我添加了一个 Enter 事件,将 ForeColor 更改为黑色并删除了零。

这隐藏了 NumericUpDown 控件微调器。

AccessCode.Controls[0].Visible = false;

这些语句在表单初始化中。 (var 代码将被加载到 AccessCode 中)

        if (code == 0)
        {
            AccessCode.ForeColor = Color.White;
        }

Enter 事件代码如下所示。

    private void AccessCode_Enter(object sender, EventArgs e)
    {
        if (AccessCode.ForeColor == Color.White)
        {
            AccessCode.ForeColor = Color.Black;
            AccessCode.Focus();
            SendKeys.SendWait("{Delete}");
        }
    }

AccessCode 控件还有一个检查有效数据的 Leave 事件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-06
    • 2011-03-19
    相关资源
    最近更新 更多