小编Vah*_*hid的帖子

使用C#中的LINQ获取List <T>中的不同属性值的数量

在列表中List<MyClass> ListOfMyClasses,如何GroupId使用LINQ 获取有多少不同的属性值?

public class MyClass
{
     public int GroupId;
}
Run Code Online (Sandbox Code Playgroud)

例如,假设我们有这个列表:

ListOfMyClasses: {MyClass1 (GroupId = 1), MyClass2 (GroupId = 3), MyClass3 (GroupId = 1)}
Run Code Online (Sandbox Code Playgroud)

这里我们应该得到结果为2(GroupId的两个不同的数字).

c# linq group-by list distinct

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

如何在C#中处理组合类

我要问的是部分与设计模式有关.

可以说我有一个IDrawing界面.另外两个名为TextDrawingShapeDrawing的基本类实现了这个,我有一个知道如何绘制这些类的View类!

但是我有更复杂的绘图类,它们也实现了IDrawing接口,但它们本身由几个IDrawing类组成!

如何在我的View类中绘制这些?显然教会View类来绘制每个新的IDrawing并不是一个好主意!但我还有其他选择吗?也许设计不正确?如何告诉View的Draw方法知道复杂类的原始部分并绘制它们?

   public interface IDrawing
   {
   }

   public class TextDrawing : IDrawing
   {
   }

   public class ShapeDrawing : IDrawing
   {      
   }

   public class SignDrawing : IDrawing
   {
      public TextDrawing Text { get; set; }
      public ShapeDrawing Border { get; set; }
   }

   public class MoreComplexDrawing : IDrawing
   {
      public TextDrawing Text { get; set; }
      public ShapeDrawing Border1 { get; set; } …
Run Code Online (Sandbox Code Playgroud)

c# inheritance design-patterns interface composition

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

如何在Winforms中使UI响应

而不是大多数人第一次学习Winforms然后搬到了WPF,我是相反的!由于某些关于图形性能的原因,我必须使用Winforms.但是我坚持第一步.如何使UI响应像WPF一样.Grids在Winforms中相当于什么.任何帮助都非常感谢.

.net c# wpf winforms

4
推荐指数
2
解决办法
8658
查看次数

WPF中的模糊转换文本

我使用DrawingContext.DrawTextDrawingContext.PushTransfrom创建在WPF视觉层旋转的文本,但正如你在下面的图片中看到的,旋转的文本是在图像的某些区域,而模糊的..

有什么我可以用来改善的选择吗?该宋体字体用于文本。

在此处输入图片说明

public class BeamTextDrawing : FrameworkElement
{
    private readonly VisualCollection _visuals;
    public BeamTextDrawing(double scale)
    {
        if (scale <= 0)
        {
            scale = 1;
        }
        var typeface = Settings.BeamTextTypeface;
        var cultureinfo = Settings.CultureInfo;
        var flowdirection = Settings.FlowDirection;
        var textsize = Settings.BeamTextSize / scale;
        var beamtextcolor = Settings.InPlanBeamTextColor;

        _visuals = new VisualCollection(this);

        foreach (var beam in Building.BeamsInTheElevation)
        {
            var drawingVisual = new DrawingVisual();
            using (var dc = drawingVisual.RenderOpen())
            {
                var text = Convert.ToString(beam.Section.Id);
                //text = …
Run Code Online (Sandbox Code Playgroud)

c# wpf blurry formatted-text drawingcontext

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

如何在WPF中的代码中显示工具提示

如何在代码隐藏中显示工具提示?下面的代码更好地定义了我的问题.显然我不希望代码检查鼠标位置等,只是如何显示工具提示.

private void UIElement_OnMouseMove(object sender, MouseEventArgs e)
{
    // if mouse position equals certain coordinates show the tooltip
}
Run Code Online (Sandbox Code Playgroud)

c# wpf tooltip

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

在后面的代码中在WPF中创建一个Blink动画

我想将Blink动画应用于一个动画,Canvas以便我在其上绘制的所有对象都会闪烁.

我使用下面的代码有点成功,它改变了相当快的Opacity属性Canvas来实现这个效果,但我有点不满意.

我希望FadeOut/FadeIn在我当前的代码中没有任何纯闪烁.我怎么能以正确的方式做到这一点?

var blinkAnimation = new DoubleAnimation
{
    From = 1,
    To = 0
};

var blinkStoryboard = new Storyboard
{
    Duration = TimeSpan.FromMilliseconds(500),
    RepeatBehavior = RepeatBehavior.Forever,
    AutoReverse = true
};

Storyboard.SetTarget(blinkAnimation, MyCanvas);
Storyboard.SetTargetProperty(blinkAnimation, new PropertyPath(OpacityProperty));

blinkStoryboard.Children.Add(blinkAnimation);
MyCanvas.BeginStoryboard(blinkStoryboard);
Run Code Online (Sandbox Code Playgroud)

也许我可以使用VisibilityProperty它来做到这一点,但我无法做到这一点.

c# wpf animation blink

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

同时执行两个单独的方法

我正在尝试使用Backgroundworker(或者如果不可能使用其他方法)同时执行两个单独的方法来获得性能.这个想法是在方法上做大量的计算.

有可能吗?

private readonly BackgroundWorker _worker = new BackgroundWorker();
private readonly BackgroundWorker _worker2 = new BackgroundWorker();

public MainWindow()
{
    InitializeComponent();

    _worker.WorkerReportsProgress = true;
    _worker.WorkerSupportsCancellation = true;
    _worker.DoWork += worker_DoWork;
    _worker.RunWorkerAsync();

    _worker2.WorkerReportsProgress = true;
    _worker2.WorkerSupportsCancellation = true;
    _worker2.DoWork += worker_DoWork2;
    _worker2.RunWorkerAsync();
}

private void worker_DoWork(object sender, DoWorkEventArgs e)
{
    // Do something
}

private void worker_DoWork2(object sender, DoWorkEventArgs e)
{
    //  Do something simultaneously with worker_DorWork
}
Run Code Online (Sandbox Code Playgroud)

.net c# wpf multithreading backgroundworker

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

如何存储/处理c#中其他类可用的数据

我正在写一个CAD程序.假设我在输入类中,该类从文本文件中读取各种数据并创建大量列表/字典......这些数据需要通过其他类中的其他方法进行修改.现在这是我到目前为止的方式:

我有一个静态类:Building.cs当我创建/或加载项目时,此类包含所有数据,如列,梁,点等列表.所有这些都存储为私有字段.我可以使用类的公共方法(如GetColumns或GetPoints)访问这些...

现在我也有非静态类.它们包含2-3种公共方法.并在建筑物的各个部分做一些事情.

public static class Building
{
    private static List<Column> columns;
    private static List<Beams> beams;
    private static List<Points> points;

    public static List<Column> GetColumns() 
    {
        return Columns;
    }
}

public class ColumnsService()
{
    private List<Columns> columns;
    public GroupColumns(List<Columns> columns)
    {
        this.columns = columns;
    }

    public void Group()
    {
        // group columns
    }
}

var columns = Building.GetColumns();
var columnsService = new ColumnsService(columns);
columnsService.Group();
Run Code Online (Sandbox Code Playgroud)

我想知道这是要走的路吗?我还能如何存储数据.在整个程序的整个生命周期中,大多数类都需要访问数据.什么是最佳实践.

c# static class

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

如何在WPF中为TranslateTransform和ScaleTransform设置动画

我正在尝试使用代码隐藏同时为a TranslateTransformScaleTransforma 设置动画.我研究了一些类似的问题,但我有些问题,我仍然坚持第一步.RectangleStoryBoard

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="*"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
    <Rectangle x:Name="MyRectangle" Width="100" Height="100" Fill="Aqua"></Rectangle>
    <Button Grid.Row="1" Content="Animate" Click="ButtonBase_OnClick"/>
</Grid>

    private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
    {
        var translate_x = new DoubleAnimation()
        {
            From = 0,
            To = 100,
            Duration = TimeSpan.FromSeconds(5),
        };
        var translate_y = new DoubleAnimation()
        {
            From = 0,
            To = 100,
            Duration = TimeSpan.FromSeconds(5),
        };

        var scale_x = new DoubleAnimation()
        {
            From = 1,
            To = 2,
            Duration = TimeSpan.FromSeconds(5),
        }; …
Run Code Online (Sandbox Code Playgroud)

c# wpf storyboard doubleanimation

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

使用派生类覆盖基类的属性

在C#代码中,如果Rebar类派生自Reinforcement类,则RebarShape类继承ReinforcementShape该类.是否可以使用类覆盖ReinforcementShape基类中的RebarShape属性?

   public class ReinforcementShape
   {
   }

   public class RebarShape : ReinforcementShape
   {
   }

   public class Reinforcement
   {
        public ReinforcementShape Shape { get; set; }
   }


   public class Rebar : Reinforement
   {
        // I want to override the Shape property
        // but with its derived class which is RebarShape

        // override the base property somehow!
        public RebarShape Shape { get; set; }
   }
Run Code Online (Sandbox Code Playgroud)

更新:

当前的实施有什么问题?

在基地:

public virtual ReinforcementShape …
Run Code Online (Sandbox Code Playgroud)

c# polymorphism inheritance properties

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