0

这就是我想要完成的。

这是一个用于信息亭的条形码阅读器。

  • 主屏幕文本块应该说“扫描条形码”
  • 条码读取后
  • 连接到远程 SQL Server 以检查 Barcode 是否符合条件
  • 如果它符合主文本块应该说“你赢了.....” 1 分钟,并显示按钮打印获胜。
  • 如果它不符合条件,它应该说 5 秒钟“请与收银员核对”
  • 如果它的条形码错误,它应该说 5 秒钟“错误的条形码,再试一次”
  • 它应该始终在最后恢复为“扫描条形码”

我知道最好在文本块上制作动画,但是如何从代码触发动画。

这可能是一种更简单的方法来实现这一点,如果有,请告诉我。

我用 VB 编写代码,是的,老派,但我可以轻松地在线转换您的 C# 代码。

提前致谢

4

2 回答 2

0

我会使用 TextChanged 事件,所以一个例子就像这样。

    private void txScanBox_TextChanged(object sender, EventArgs e)
    {
            //Do whatever
    return;

    }
于 2013-05-10T19:55:54.900 回答
0

现在我正在使用它,如果您有更好的方法,请告诉我。

在 xaml 中,我创建了 3 个没有触发器的故事板。

<Window.Resources>
    <Storyboard x:Key="WrongBarcode">
        <StringAnimationUsingKeyFrames Storyboard.TargetProperty="(TextBlock.Text)" Storyboard.TargetName="txtbScan">
            <DiscreteStringKeyFrame KeyTime="0:0:0" Value="Wrong Barcode"/>
            <DiscreteStringKeyFrame KeyTime="0:0:4" Value="Scan your barcode"/>
        </StringAnimationUsingKeyFrames>
    </Storyboard>
    <Storyboard x:Key="Win">
        <StringAnimationUsingKeyFrames Storyboard.TargetProperty="(TextBlock.Text)" Storyboard.TargetName="txtbScan">
            <DiscreteStringKeyFrame KeyTime="0:0:0" Value="Hurray You Won"/>
            <DiscreteStringKeyFrame KeyTime="0:0:25" Value="Scan your barcode"/>
        </StringAnimationUsingKeyFrames>
    </Storyboard>
    <Storyboard x:Key="Unqulified">
        <StringAnimationUsingKeyFrames Storyboard.TargetProperty="(TextBlock.Text)" Storyboard.TargetName="txtbScan">
            <DiscreteStringKeyFrame KeyTime="0:0:0" Value="Please Qualify your card at the Cashier."/>
            <DiscreteStringKeyFrame KeyTime="0:0:4" Value="Scan your barcode"/>
        </StringAnimationUsingKeyFrames>
    </Storyboard>
</Window.Resources>

然后在后面的代码中

Private Sub Window_KeyDown(sender As Object, e As KeyEventArgs)
    Static curBarcode As String
    If e.Key = 6 Then 'Found that it hits key6 at the end of each barcode read
        Select Case ValidateCard(curBarcode)
            Case 0
                Dim Unqulified As Storyboard = DirectCast(FindResource("Unqulified"), Storyboard)
                Unqulified.Begin(Me)
            Case 1
                Dim win As Storyboard = DirectCast(FindResource("Win"), Storyboard)
                win.Begin(Me)
            Case Else
                Dim WrongBarcode As Storyboard = DirectCast(FindResource("WrongBarcode"), Storyboard)
                WrongBarcode.Begin(Me)

        End Select

        'txtbScan.Text = "Scan your gift card."
        curBarcode = ""
    Else
        curBarcode = curBarcode & Mid(e.Key.ToString(), 2, 1)
        '


    End If
End Sub

我仍然需要更改获奖文本,它有很多变化。我正在考虑添加一个更大的文本块,甚至可能是一个图像,并在代码和动画可见性中设置值。

请让我知道你的想法。

谢谢

于 2013-05-10T21:00:58.907 回答