小编Tom*_*tom的帖子

枚举TryParse与基类限定符

我有一个枚举(让我们说DemoEnum),我想解析这个枚举的值.我在写信

DemoEnum value;
if(DemoEnum.TryParse("input", out value))
{
   this.Value = value;
}
Run Code Online (Sandbox Code Playgroud)

现在,resharper建议我使用基类限定符.

我只是想知道使用基类限定符有什么好处?

c# resharper

2
推荐指数
1
解决办法
646
查看次数

属性在DependencyProperty中更改

在上一篇文章中,我询问了如何将属性注册为DependencyProperty.我得到了答案,它工作正常.

但是现在我想在Click上为这个DependencyProperty添加一些Items.这不起作用.我注册DependencyProperty的代码是:

public static readonly DependencyProperty ChartEntriesProperty = DependencyProperty.Register(
        "ChartEntries", typeof(ObservableCollection<ChartEntry>), typeof(ChartView),
        new FrameworkPropertyMetadata(OnChartEntriesChanged));

    private static void OnChartEntriesChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {

    }
Run Code Online (Sandbox Code Playgroud)

在从我的XAML绑定到我的c#-code时,调用OnChartEntriesChanged-Event.但是如果我之后添加ChartEntry(按下按钮),则不会触发事件.

有谁知道为什么?

c# wpf dependency-properties

2
推荐指数
1
解决办法
1117
查看次数

如何遍历泛型类型的列表

我需要循环遍历编译时未知类型的列表.怎么做?以下代码在运行时失败,不允许转换:

    Type objType = dataObject.GetType();
    List<string> strList = new List<string>();

    foreach (PropertyInfo prop in objType.GetProperties())
    {
        var val = prop.GetValue(dataObject);

        if (prop.PropertyType.Name.StartsWith("List"))   // Is there a better way?
        {
            foreach (object lval in (List<object>) val)  // Runtime failure (conversion not allowed)
            {
                strList.Add(lval.ToString());
            }
        }
        ...
Run Code Online (Sandbox Code Playgroud)

c#

2
推荐指数
1
解决办法
4019
查看次数

关闭 Windows 窗体中控件中的所有窗体

我在面板中添加了几个表单。表单具有属性

form.TopLevel = false;
form.Parent = pnlMain;
Run Code Online (Sandbox Code Playgroud)

现在我想遍历 pnlMain 中的所有表单并关闭所有表单。为此,我有以下代码:

private void CloseForms()
{
    foreach(Form form in pnlMain.Controls.OfType<Form>())
        form.Close();
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,并非所有表格都已关闭。

在一个有四个打开的表单的例子中:我计算了打开的表单,

int count = pnlMain.Controls.OfType<Form>().Count();
Run Code Online (Sandbox Code Playgroud)

当我调用 CloseForms 时,只有两个表单被关闭。另外两个在 CloseForms 的另一个调用中关闭。

如何只用一个电话关闭所有表格?

c# winforms

1
推荐指数
1
解决办法
2057
查看次数

无法打开带空格的文件夹

我有以下代码从我的FTP服务器读取项目:

internal List<FtpItem> OpenFolder(string folderName)
{
   FtpWebRequest request = CreateFtpWebRequest("ftp://myserver.com", folderName);
   request.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
   List<FtpItem> ftpItems = GetFtpItemsFromRequest(request);
   return ftpItems;
}

private List<FtpItem> GetFtpItemsFromRequest(FtpWebRequest ftpWebRequest)
{
   List<FtpItem> ftpItems = new List<FtpItem>();
   WebResponse webResponse = ftpWebRequest.GetResponse();
   StreamReader reader = new StreamReader(webResponse.GetResponseStream());
   string line = reader.ReadLine();
   while (line != null)
   {
      ftpItems.Add(new FtpItem(line));
      line = reader.ReadLine();
   }
   reader.Close();
   webResponse.Close();
   return ftpItems;
}   

private FtpWebRequest CreateFtpWebRequest(params string[] url)
{
   FtpWebRequest webRequest = (FtpWebRequest)WebRequest.Create(string.Join("/", url));
   webRequest.KeepAlive = false;
   webRequest.UseBinary = true;
   webRequest.Credentials = this.networkCredential; …
Run Code Online (Sandbox Code Playgroud)

c# ftpwebrequest

1
推荐指数
1
解决办法
1258
查看次数

一个DLL,具有两个应用程序的两个实现

我有一个带有一些类和方法的DLL.还有两个应用程序使用它.一个管理应用程序几乎需要每个方法,而客户端应用程序只需要部分内容.但是它们的大部分都被它们使用.现在我想用管理员的东西和一个与客户端的东西制作一个DLL.

  1. 每次复制DLL并手动编辑都很可怕.
  2. 也许条件编译可以帮助我,但我不知道如何使用三个项目在一个解决方案中使用不同的编码两次编译DLL.

对于这个问题,是否有比使用两个不同的DLL并在每次更改时手动编辑更好的方法?

c# dll

1
推荐指数
1
解决办法
90
查看次数

在ViewModel中的其他View中设置属性

我有一个带有a Window和a 的WPF应用程序UserControl.它UserControl是用MVVM-Pattern实现的.所以在视图中我有一个在ViewModel中Label显示string名为InfoMessage 的-property 的值.

Window我加入这个实例UserControl通过

<views:ItemInfoView Grid.Row="3" Grid.Column="1" x:Name="itemInfoView"/>
Run Code Online (Sandbox Code Playgroud)

现在我想从我的XAML设置InfoMessage Window.目前我不知道如何在xaml中实现这一点.在代码隐藏中,我可以访问DataContext我的控件并将其转换为ItemInfoViewModel并设置值如:

((ItemInfoViewModel)itemInfoView.DataContext).InfoMessage = "Hello World";
Run Code Online (Sandbox Code Playgroud)

但我希望在纯XAML中有一种方法可以做到这一点.有谁知道这是否可能以及如何?

c# wpf xaml user-controls mvvm

1
推荐指数
1
解决办法
357
查看次数

将具有3个级别的嵌套foreach循环转换为具有n个级别的重复

我想转换以下代码来处理3个以上的foreach级别.

internal static void CreateLevel(LevelObject levelObject)
{
   foreach(LevelObject l1 in levelObject.LevelObjects)
   {
      foreach(LevelObject l2 in l1.LevelObjects)
      {
         foreach(LevelObject l3 in l2.LevelObjects)
         {
            AddEntities(l3);
         }
         AddEntities(l2);
      }
      AddEntities(l1);
   }
}
Run Code Online (Sandbox Code Playgroud)

每个LevelObject都有一个子级对象集合,一组实体和一个父级对象.我需要这个将对象结构转换为过滤器.任何人都知道如何转换这个?

c# recursion

0
推荐指数
1
解决办法
767
查看次数

画两个半圆

我想用两个半圆填充一个圆。一个在左侧,另一个在右侧。左侧的圆圈应为黑色,另一侧的圆圈应为蓝色。

我该如何实现这一目标?我尝试填充一个椭圆,然后在它的一半上绘制一个矩形。这适用于圆的一半。但对于另一半我有一个问题。

有什么想法如何绘制完整的圆吗?

c# winforms

-1
推荐指数
1
解决办法
9157
查看次数

正则表达式按标签分割

我有一个文本文件,如:

<page>
Line 1
Hello World
<endpage>
<page>
Another page
<endpage>
Run Code Online (Sandbox Code Playgroud)

现在我想在<page><endpage>-tags 分割这个文本.我用以下正则表达式尝试了它:

Regex regex = new Regex(@"<page>.*?<endpage>");
MatchCollection matchCollection = regex.Matches(text);
Run Code Online (Sandbox Code Playgroud)

但这只有作用,如果<page>和之间没有换行符<endpage>.什么是正确的正则表达式来解决我的问题?

c# regex

-2
推荐指数
1
解决办法
373
查看次数