Compare commits
10 Commits
a4ad241de0
...
fdfe4ccb56
Author | SHA1 | Date | |
---|---|---|---|
fdfe4ccb56 | |||
40e6fe1b9e | |||
a9fcf7d4b3 | |||
ae690cc341 | |||
314a77bfd7 | |||
![]() |
ab5611f15d | ||
![]() |
5e5817b8a4 | ||
![]() |
c37f276314 | ||
4469ebe8f4 | |||
40b2351be0 |
@ -44,11 +44,19 @@ namespace Plane.Logging
|
||||
}
|
||||
}
|
||||
|
||||
public override string ReadLog()
|
||||
{
|
||||
string text = "";
|
||||
if (File.Exists(LogFilePath))
|
||||
text = File.ReadAllText(LogFilePath);
|
||||
return text;
|
||||
}
|
||||
|
||||
protected override void LogCore(string message, Category category, Priority priority)
|
||||
{
|
||||
lock (_logLock)
|
||||
{
|
||||
// TODO: 林俊清,20150605,应改为不使用 AppendAllText,提高性能。
|
||||
// TODO: 王海,20150605,应改为不使用 AppendAllText,提高性能。
|
||||
for (int i = 0; i < 5; i++)
|
||||
{
|
||||
try
|
||||
|
@ -9,8 +9,9 @@
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>Plane.Logging</RootNamespace>
|
||||
<AssemblyName>Plane.Logging</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
||||
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<TargetFrameworkProfile />
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
@ -20,6 +21,7 @@
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
@ -28,6 +30,7 @@
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
|
@ -9,8 +9,9 @@
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>Plane.Reflection</RootNamespace>
|
||||
<AssemblyName>Plane.Reflection</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
||||
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<TargetFrameworkProfile />
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
@ -20,6 +21,7 @@
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
@ -28,6 +30,7 @@
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
|
@ -29,7 +29,15 @@ namespace Plane.Windows.Messages
|
||||
{
|
||||
if (Dispatcher.CheckAccess())
|
||||
{
|
||||
return func();
|
||||
try
|
||||
{
|
||||
return func();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -8,15 +8,38 @@ namespace Plane.Windows.Messages
|
||||
public static class Message
|
||||
{
|
||||
private static Action<string> ShowAction { get; set; }
|
||||
private static Action<bool> ConnectAction { get; set; }
|
||||
private static Action<string> StatusAction { get; set; }
|
||||
|
||||
public static void Configure(Action<string> showAction)
|
||||
{
|
||||
ShowAction = showAction;
|
||||
}
|
||||
|
||||
public static void ConfigureStatus(Action<string> showAction)
|
||||
{
|
||||
StatusAction = showAction;
|
||||
}
|
||||
|
||||
|
||||
public static void Show(string message)
|
||||
{
|
||||
ShowAction?.Invoke(message);
|
||||
ShowAction?.Invoke(DateTime.Now.ToString("HH:mm:ss ")+message);
|
||||
}
|
||||
|
||||
public static void ShowStatus(string message)
|
||||
{
|
||||
StatusAction?.Invoke(message);
|
||||
}
|
||||
|
||||
public static void Configure(Action<bool> connectAction)
|
||||
{
|
||||
ConnectAction = connectAction;
|
||||
}
|
||||
|
||||
public static void Connect(bool isConnected)
|
||||
{
|
||||
ConnectAction?.Invoke(isConnected);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -9,8 +9,9 @@
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>Plane.Windows.Messages</RootNamespace>
|
||||
<AssemblyName>Plane.Windows.Messages</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
||||
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<TargetFrameworkProfile />
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
@ -20,6 +21,7 @@
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
@ -28,10 +30,11 @@
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="MahApps.Metro, Version=1.2.2.0, Culture=neutral, PublicKeyToken=f4fb5a3c4d1e5b4f, processorArchitecture=MSIL">
|
||||
<HintPath>..\..\EHang.FormationCreator\packages\MahApps.Metro.1.2.2.0\lib\net40\MahApps.Metro.dll</HintPath>
|
||||
<Reference Include="MahApps.Metro, Version=1.5.0.23, Culture=neutral, PublicKeyToken=f4fb5a3c4d1e5b4f, processorArchitecture=MSIL">
|
||||
<HintPath>..\..\Plane.FormationCreator\packages\MahApps.Metro.1.5.0\lib\net40\MahApps.Metro.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="PresentationCore" />
|
||||
@ -40,7 +43,7 @@
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Windows.Interactivity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\..\EHang.FormationCreator\packages\MahApps.Metro.1.2.2.0\lib\net40\System.Windows.Interactivity.dll</HintPath>
|
||||
<HintPath>..\..\Plane.FormationCreator\packages\MahApps.Metro.1.5.0\lib\net40\System.Windows.Interactivity.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Xaml" />
|
||||
@ -71,9 +74,7 @@
|
||||
</Page>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="packages.config">
|
||||
<SubType>Designer</SubType>
|
||||
</None>
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="MahApps.Metro" version="1.2.2.0" targetFramework="net40" />
|
||||
<package id="MahApps.Metro" version="1.5.0" targetFramework="net40" requireReinstallation="true" />
|
||||
</packages>
|
58
Plane.Windows/IniHelper/IniFiles.cs
Normal file
58
Plane.Windows/IniHelper/IniFiles.cs
Normal file
@ -0,0 +1,58 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
|
||||
namespace Plane.Windows.IniHelper
|
||||
{
|
||||
/// <summary>
|
||||
/// IniFiles 的摘要说明。
|
||||
/// 示例文件路径:C:\file.ini
|
||||
/// [Server] //[*] 表示缓存区
|
||||
/// name=localhost //name 表示主键,localhost 表示值
|
||||
/// </summary>
|
||||
public class IniFiles
|
||||
{
|
||||
public string path;
|
||||
[DllImport("kernel32")] //返回0表示失败,非0为成功
|
||||
private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
|
||||
[DllImport("kernel32")] //返回取得字符串缓冲区的长度
|
||||
private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);
|
||||
/// <summary>
|
||||
/// 保存ini文件的路径
|
||||
/// 调用示例:var ini = IniFiles("C:\file.ini");
|
||||
/// </summary>
|
||||
/// <param name="INIPath"></param>
|
||||
public IniFiles()
|
||||
{
|
||||
this.path = Environment.CurrentDirectory + @"\Config.ini";
|
||||
}
|
||||
/// <summary>
|
||||
/// 写Ini文件
|
||||
/// 调用示例:ini.IniWritevalue("Server","name","localhost");
|
||||
/// </summary>
|
||||
/// <param name="Section">[缓冲区]</param>
|
||||
/// <param name="Key">键</param>
|
||||
/// <param name="value">值</param>
|
||||
public void IniWritevalue(string Section, string Key, string value)
|
||||
{
|
||||
WritePrivateProfileString(Section, Key, value, this.path);
|
||||
}
|
||||
/// <summary>
|
||||
/// 读Ini文件
|
||||
/// 调用示例:ini.IniWritevalue("Server","name");
|
||||
/// </summary>
|
||||
/// <param name="Section">[缓冲区]</param>
|
||||
/// <param name="Key">键</param>
|
||||
/// <returns>值</returns>
|
||||
public string IniReadvalue(string Section, string Key)
|
||||
{
|
||||
StringBuilder temp = new StringBuilder(255);
|
||||
|
||||
int i = GetPrivateProfileString(Section, Key, "", temp, 255, this.path);
|
||||
return temp.ToString();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -1,77 +1,81 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{06848293-9B17-4068-9B35-44D0ED713CD4}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>Plane.Windows</RootNamespace>
|
||||
<AssemblyName>Plane.Windows</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="PresentationCore" />
|
||||
<Reference Include="PresentationFramework" />
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xaml" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="WindowsBase" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Controls\ProgressButton.cs" />
|
||||
<Compile Include="Converters\BooleanToResourceConverter.cs" />
|
||||
<Compile Include="Converters\BooleanToStringConverter.cs" />
|
||||
<Compile Include="Converters\BooleanToVisibilityConverter.cs" />
|
||||
<Compile Include="Converters\NullableBooleanConverter.cs" />
|
||||
<Compile Include="Converters\BooleanConverter.cs" />
|
||||
<Compile Include="Converters\InverseBooleanConverter.cs" />
|
||||
<Compile Include="Converters\NullableBooleanToVisibilityConverter.cs" />
|
||||
<Compile Include="UpdateChecker.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Page Include="Assets\ListBox.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</Page>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Plane\Plane.csproj">
|
||||
<Project>{6cce2aeb-3b38-4c00-b32d-433a990ae2ad}</Project>
|
||||
<Name>Plane</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{06848293-9B17-4068-9B35-44D0ED713CD4}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>Plane.Windows</RootNamespace>
|
||||
<AssemblyName>Plane.Windows</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<TargetFrameworkProfile />
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="PresentationCore" />
|
||||
<Reference Include="PresentationFramework" />
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xaml" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="WindowsBase" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Controls\ProgressButton.cs" />
|
||||
<Compile Include="Converters\BooleanToResourceConverter.cs" />
|
||||
<Compile Include="Converters\BooleanToStringConverter.cs" />
|
||||
<Compile Include="Converters\BooleanToVisibilityConverter.cs" />
|
||||
<Compile Include="Converters\NullableBooleanConverter.cs" />
|
||||
<Compile Include="Converters\BooleanConverter.cs" />
|
||||
<Compile Include="Converters\InverseBooleanConverter.cs" />
|
||||
<Compile Include="Converters\NullableBooleanToVisibilityConverter.cs" />
|
||||
<Compile Include="IniHelper\IniFiles.cs" />
|
||||
<Compile Include="UpdateChecker.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Page Include="Assets\ListBox.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</Page>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Plane\Plane.csproj">
|
||||
<Project>{6cce2aeb-3b38-4c00-b32d-433a990ae2ad}</Project>
|
||||
<Name>Plane</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
@ -1,4 +1,5 @@
|
||||
using System.Diagnostics;
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
|
||||
namespace Plane.Logging
|
||||
{
|
||||
@ -14,7 +15,13 @@ namespace Plane.Logging
|
||||
|
||||
protected override void LogCore(string message, Category category, Priority priority)
|
||||
{
|
||||
Debug.WriteLine(BuildStandardLogEntry(message, category, priority));
|
||||
Debug.WriteLine(BuildStandardLogEntry(message, category, priority)); //写入日志
|
||||
}
|
||||
|
||||
public override string ReadLog()
|
||||
{
|
||||
return "";
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -18,5 +18,7 @@ namespace Plane.Logging
|
||||
/// <param name="category">Category of the entry.</param>
|
||||
/// <param name="priority">The priority of the entry.</param>
|
||||
void Log(string message, Category category = Category.Info, Priority priority = Priority.None);
|
||||
|
||||
string ReadLog();
|
||||
}
|
||||
}
|
@ -26,6 +26,9 @@ namespace Plane.Logging
|
||||
LogCore(message, category, priority);
|
||||
}
|
||||
|
||||
public abstract string ReadLog();
|
||||
|
||||
|
||||
protected static string BuildStandardLogEntry(string message, Category category, Priority priority)
|
||||
{
|
||||
return $"--{category}-{priority}-{DateTime.Now.ToString("yyyyMMdd HH:mm:ss.fff")}--------------------{Environment.NewLine}{Environment.NewLine}{message}{Environment.NewLine}{Environment.NewLine}--<END>--{Environment.NewLine}{Environment.NewLine}";
|
||||
|
Loading…
Reference in New Issue
Block a user