在“中处理不同数据类型限制的方法”;文本框“;来自SQLServer-C#Winforms的

在“中处理不同数据类型限制的方法”;文本框“;来自SQLServer-C#Winforms的,c#,sql-server,winforms,types,formatting,C#,Sql Server,Winforms,Types,Formatting,我目前正在开发一个软件,以集成并成为一个很好的前端UI到一个没有前端UI的数据库。这个UI的一部分有一个点,左边是一个列表框,右边是下拉框的多个部分,左边是一个“文本框”,下面是一个“和”和“或”单选按钮。它看起来类似于下面的链接图片 话虽如此,我想做的一件事是基于左侧选择的列,“文本框”将相应地限制/强制重新格式化输入的数据。因此,如果它是一列日期时间格式,那么文本框将只允许这种输入。如果限制为int[x],则唯一的输入将不超过整数等的限制,但不允许输入任何字母 所以这才是真正的斗争所在。我

我目前正在开发一个软件,以集成并成为一个很好的前端UI到一个没有前端UI的数据库。这个UI的一部分有一个点,左边是一个列表框,右边是下拉框的多个部分,左边是一个“文本框”,下面是一个“和”和“或”单选按钮。它看起来类似于下面的链接图片

话虽如此,我想做的一件事是基于左侧选择的列,“文本框”将相应地限制/强制重新格式化输入的数据。因此,如果它是一列日期时间格式,那么文本框将只允许这种输入。如果限制为int[x],则唯一的输入将不超过整数等的限制,但不允许输入任何字母

所以这才是真正的斗争所在。我正在努力找出如何只允许基于所选列的特定输入框。我是否将其保留为文本框,然后使用基于列格式限制数据输入的条件语句?(这就是我目前计划对其进行编程的方式。然而,这需要很多条件,并确保尝试处理任何和所有可能的可能性。)或者有没有更好的方法来处理可能存在的不同类型的SQL Server数据类型?如中所示,我创建了一个具有适当输入限制的框,并根据当时选择的列以某种方式动态地交换它们

最大的问题是日期时间格式。我想使用一个日期选择框(确保我尽可能地使它成为白痴证明)。然而,我不确定是否有一种简单的方法可以在日期选择器框和任何其他框之间进行切换,这些框可能是必需的,并且所有这些框都是无缝的

注意:所有数据都将被存储,这样,如果您返回到已经为其输入数据的列,它会将其拉回


感谢所有的反馈和输入。

也许您想要的是通过以下方式处理数据类型

有时似乎没有办法用条件验证用户输入,但有办法使其更简单

对于许多处理条件的问题,您可能可以使用引发异常的不同解析方法。当抛出异常时,您可以让它控制提交的
bool
条件。DateTime.Parse()就是其中之一

对于日期时间解析问题,您可能会遇到以下问题:将文本框转换为字符串并使用
DateTime.Parse()


另外,使用
DateTimePicker
对象可能比使用文本框更有用。

按照我阅读问题的方式,您已经解决了确定SQL Server列的数据类型的问题。如果这是正确的,那么您需要做的就是根据列的数据类型交换控件。如下所示:

switch (columnType)
{
   case int:
      TextBoxInt.Visible = true;
      TextBoxString.Visisble = false;
      DateTimePicker.Visible = false;
      break;
   case string:
      TextBoxString.Visible = true;
      TextBoxInt.Visible = false;
      DateTimePicker.Visible = false;
      break;
   case DateTime:
      DateTimePicker.Visible = true;
      TextBoxInt.Visible = false;
      TextBoxString.Visible = false;
      break;
}

然后,您可以根据每个控件的数据类型适当地限制其输入。

具有讽刺意味的是,您链接到的帖子就是我之前写的帖子。既然我有了这些信息,我就可以在那里进行格式化了。这里真正的问题是,我正在努力弄清楚如何处理不同类型的数据类型以及潜在输入将键入的字段。如前所述,dio我将该框保留为文本框,并相应地调整限制,或者是否有更简单的方法来处理每种不同类型的数据类型?就像在不同的盒子里一样,可以为我处理这些限制。如果有什么东西我可以使用的话,再发明轮子是没有意义的。@RyanWakefield Edit:尽管您可能无法避免对sql部分执行一些有条件的情况。您可能会发现很多DateTime解析已经以各种形式在线完成。例如,有一个DateTimePicker类。这个视频是一个很好的例子:。只要在谷歌搜索DateTime文本框Gui窗口窗体中寻找其他选项,你就会找到它们。谢谢你的链接。我想你们和大卫·弗莱彻一起回答了我的问题。是的,我已经可以得到各自的数据了。这就是我想做的逻辑。但是,我不知道如何交换这两个盒子。我已经习惯了JAVA,必须对代码的大小、位置以及代码中的所有内容进行编码,这使得交换变得很容易。有了C#,我有点迷茫了。这就是希尔1号。但正如我对Jamin说的,有没有更简单的方法?是否已经有我可以使用的框来为我做所有的格式化和限制?当我真的不需要一个d时,尽量不去做大量的编码,这样就可以使用内置的方法来处理系统了。在.NET中进行交换是相当简单的。在开发环境中,只需将控件放置在窗体上,因为您一次只希望看到一个控件,所以可以将它们移动到彼此重叠的位置。至于控制什么,有很多选择。对于数字,可以使用数字向上/向下控件、屏蔽编辑控件或文本框。每个选项都有其优点和缺点。具有讽刺意味的是,DateTime数据类型可能是使用日期时间选择器最简单的选择。如果你不想做太多的编码,我建议使用上/下控件或隐藏的数字编辑。那么你是说我创建所有的框,然后将它们重叠在一起?然后对他们实施所有具体的制衡?我想我能明白这是怎么回事。我需要尝试并找到一个可能的解决方案来限制我将要创建的框类型的数量。是的,应该很简单,并且需要最少的编码。