winforms 在c#中为数据网格视图接受空文本框

des4xlb0  于 2023-02-19  发布在  C#
关注(0)|答案(1)|浏览(131)

我有一个数据网格视图中显示的现有产品列表。用户可以使用此窗口添加新产品x1c 0d1x
一些字段可以被接受为空。文本字段必须只有字符和整数字段必须只有正整数。ID,价格,播放时间和状态必须是正整数。其余的必须是字符,当他们不是空的。我的代码工作,但只有当每个字段可以是空的是空的。它不工作,如果一些是和其他人不是。
如果你能解决接受空int字段的问题,那就太好了。myint.ToString().Length;似乎不能完成这项工作。也许答案很简单,但我对C#和. Net有点陌生。
这是我写的代码

if (!plist.type.Any() || !plist.author.Any() || !plist.genre.Any() || !plist.format.Any() || !plist.language.Any() || !plist.platform.Any())
                {
                    if (plist.id != Math.Abs(plist.id) || plist.price != Math.Abs(plist.price)
                        || plist.playtime != Math.Abs(plist.price) || plist.status != Math.Abs(plist.price))
                    {
                        DialogResult = DialogResult.No;
                    }
                    else if (plist.type.Any(char.IsDigit) || plist.name.Any(char.IsDigit)
                        || plist.author.Any(char.IsDigit) || plist.genre.Any(char.IsDigit)
                        || plist.format.Any(char.IsDigit) || plist.language.Any(char.IsDigit) || plist.platform.Any(char.IsDigit)) 
                    {
                        DialogResult = DialogResult.No;
                    }
                    else
                    {
                        DialogResult = DialogResult.OK;
                    }

                }
                else
                {
                    DialogResult = DialogResult.OK;
                }

如果还有什么需要澄清的请告诉我。
我很感激你给我的任何建议!

a0zr77ik

a0zr77ik1#

假设类型、作者、流派、格式、语言和平台是必填字段,则应将DialogResult设置为DialogResult。在最下面的else语句中,使用No代替OK。否则,将跳过逻辑并返回错误的结果。

if (!plist.type.Any() || !plist.author.Any() || !plist.genre.Any() || !plist.format.Any() || !plist.language.Any() || !plist.platform.Any())
{
    if (plist.id != Math.Abs(plist.id) || plist.price != Math.Abs(plist.price)
        || plist.playtime != Math.Abs(plist.price) || plist.status != Math.Abs(plist.price))
    {
        DialogResult = DialogResult.No;
    }
    else if (plist.type.Any(char.IsDigit) || plist.name.Any(char.IsDigit)
        || plist.author.Any(char.IsDigit) || plist.genre.Any(char.IsDigit)
        || plist.format.Any(char.IsDigit) || plist.language.Any(char.IsDigit) || plist.platform.Any(char.IsDigit)) 
    {
        DialogResult = DialogResult.No;
    }
    else
    {
        DialogResult = DialogResult.OK;
    }

}
else
{
    DialogResult = DialogResult.No;
}

至于空整数长度问题,请确保您没有尝试将null值转换为字符串。考虑使用numericUpDown而不是文本框,因为numericUpDown是为数字设计的。您甚至可以为numericUpDown设置限制,例如设置一个较低的数字限制以防止出现负数。
https://learn.microsoft.com/en-us/dotnet/api/system.windows.forms.numericupdown?view=windowsdesktop-7.0

相关问题