c# String属性和字符串字面值连接问题

本文关键字:字面值 连接 问题 字符串 String 属性 | 更新日期: 2023-09-27 18:01:42

我是c#的新手,我遇到了字符串连接问题。我希望有人能给我一个提示,帮助我解决这个问题。我已经在谷歌上广泛搜索了一个多星期,所以任何帮助/建议都会非常感激。

我已经为字符串属性创建了一个自定义的PathEditor。这个属性基本上允许用户输入一个在应用中使用的文件。如果输入的文件是正确的,它就会显示在属性单元格中。我要做的是,如果输入的文件不存在,则输出到属性单元格的错误消息-我在文件验证器中检查了这一点。这是字符串字面值的问题。

如果我使用:

return inputFile+"Error_";

这个工作正常,我得到输出文件123。在属性网格单元格中的txtError_。

如果我使用:

return "Error_"+inputFile;

我只得到没有"Error_"字面值的inputFile。因此,在属性网格单元格中显示file123.txt。

我已经检查和inputFile是一个字符串类型。你知道为什么会这样吗?

还有,是否有任何方法可以更改消息输出的字体和/或颜色?我试图改变属性网格单元格的背景,我知道这是不可能做到的。

谢谢。Z

更多代码:

[
Description("Enter or select the wave file. If no extension, or a non .wav extension, is specified, the default extension .wav will be added to the filename."),
GridCategory("Sound"),
Gui.Design.DisplayName ("Input Sound"),
PathEditor.OfdParamsAttribute("Wave files (*.wav)|*.wav", "Select Audio File"),
Editor(typeof(PathEditor), typeof(System.Drawing.Design.UITypeEditor))
]
public string InputWavefile
{
    get { return System.IO.Path.GetFileName(inputtWavefile); }
    set 
    {
        if (value != inputWavefile)  // inputWavefile has been changed
        {                           
            // validate the input stringg
             _inputWavefile = FileValidation.ValidateFile(value);
            // assign validated value
            inputWavefile = _inputWavefile;
       }
    }
}

c# String属性和字符串字面值连接问题

我的猜测是你在inputFile的开头有一个奇怪的字符,这是令人困惑的事情-尝试在调试器中使用inputFile.ToCharArray()查看它以获得字符数组。

字符串连接本身应该是好的-这是如何解释的值,这是问题,我怀疑…

我猜你的文件名看起来像这样,C:'Folder' filename .txt当你开始时。

在你的FileValidation.ValidateFile()方法中

return "Error_" + InputFileName;

现在看起来像这样:Error_C:'Folder'FileName.txt因此,当您运行下面这行代码时,

get { return System.IO.Path.GetFileName( _inputWavefile ); }

它去掉路径并只返回文件名, filename .txt

即使文件名无效,您仍然在其上运行System.IO.Path.GetFileName()

假设这是winforms应用程序中的PropertyGrid。那么它既不是字符串连接问题,也不是PropertyGrid问题,可以通过以下代码片段证明。因此,您需要查看代码的其他地方:

<>之前公共部分类Form1: Form {PropertyGrid pg;public Form1() {pg = new PropertyGrid();pg.Dock = DockStyle.Fill;this.Controls.Add (pg);var inputFile = "一些文件名。txt";var obj = new obj ();obj。1 = "Error_" + inputFile;obj。2 = inputFile + "Error_";pg.SelectedObject = obj;}}类Obj {公共字符串{get;设置;}public string Two {get;设置;}}