小编Dan*_*ley的帖子

在运行时创建标签

使用此代码,我可以在运行时创建标签:

ArrayList CustomLabel = new ArrayList();

foreach (string ValutaCustomScelta in Properties.Settings.Default.ValuteCustom)
{
     CustomLabel.Add(new Label());
     (CustomLabel[CustomLabel.Count - 1] as Label).Location = new System.Drawing.Point(317, 119 + CustomLabel.Count*26);
     (CustomLabel[CustomLabel.Count - 1] as Label).Parent = tabPage2;
     (CustomLabel[CustomLabel.Count - 1] as Label).Name = "label" + ValutaCustomScelta;
     (CustomLabel[CustomLabel.Count - 1] as Label).Text = ValutaCustomScelta;
     (CustomLabel[CustomLabel.Count - 1] as Label).Size = new System.Drawing.Size(77, 21);
     Controls.Add(CustomLabel[CustomLabel.Count - 1] as Control);
}
Run Code Online (Sandbox Code Playgroud)

我需要在tabPage2上创建标签,但是此行不起作用:

 (CustomLabel[CustomLabel.Count - 1] as Label).Parent = tabPage2;
Run Code Online (Sandbox Code Playgroud)

在运行时在tabPage2上创建标签的正确指示是哪一条?(我正在使用Visual Studio 2010,Windows窗体)

c# runtime labels

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

将子文件夹放入Resources文件夹Visual Studio C#Windows窗体

我在资源文件夹(Properties.Resources)中创建了一个文件夹.我怎样才能使用那里的图像?

c# winforms

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

如何在LINQ语句中使用Extension方法?

我有一个转换Address为oneline字符串的扩展方法:

public static class AddressExtensions
{
    public static string ToOneLine(this Address address)
    {
        var sb = new StringBuilder();
        sb.Append(address.Street);
        if (!string.IsNullOrWhiteSpace(address.City)) sb.Append(string.Format("{0}, ",address.City));
        if (!string.IsNullOrWhiteSpace(address.State)) sb.Append(string.Format("{0}, ", address.State));
        if (!string.IsNullOrWhiteSpace(address.Zip)) sb.Append(string.Format("{0}, ", address.Zip));
        return sb.ToString();
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我用它将数据从域模型传输到我的DTO.下面的代码使用foreach和工作正常:

var entity=_repository.GetAll();
var model = new List<SummaryViewModel>();
        foreach (var e in entity)
        {
            model.Add(new SummaryViewModel
            {
                Address = e.Address.ToOneLine(),
                Name = e.Name,
                Id = e.Id
            });
        }
Run Code Online (Sandbox Code Playgroud)

但是在使用时LINQ,

        var model = entity.Select(e => new SummaryViewModel
        { …
Run Code Online (Sandbox Code Playgroud)

c# linq foreach entity-framework

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

在WPF中验证文本框时启用按钮

我正在尝试在验证文本框时禁用/启用按钮.

我得到了验证工作(我知道它可行,因为它改变了设计).但是,当文本框验证时,我似乎无法将按钮从禁用更改为启用.

这是我的代码:

<AdornerDecorator>
    <TextBox Width="150"
             Validation.ErrorTemplate="{StaticResource ValidationErrorTemplate}"
             x:Name="OrgNoTextBox">
        <TextBox.Text>
            <Binding Path="Customer.OrgNo" UpdateSourceTrigger="PropertyChanged" >
                <Binding.ValidationRules>
                    <client:RegexValidationRule ValidatesOnTargetUpdated="True" Pattern="OrgNo" />
                </Binding.ValidationRules>
            </Binding>
        </TextBox.Text>
    </TextBox>
</AdornerDecorator>
Run Code Online (Sandbox Code Playgroud)

...

<Button Width="80"
        Height="25" 
        Margin="0 0 5 0" 
        Command="{Binding OkCommand}" 
        HorizontalAlignment="Left" 
        IsDefault="True" 
        Content="Save">
    <Button.Style>
        <Style TargetType="{x:Type Button}">
            <Setter Property="IsEnabled" Value="false" />
            <Style.Triggers>
                <MultiDataTrigger>
                    <MultiDataTrigger.Conditions>
                        <Condition Binding="{Binding  ElementName=OrgNo, Path=(Validation.HasError)}" 
                                       Value="false" />
                    </MultiDataTrigger.Conditions>
                    <Setter Property="IsEnabled" 
                            Value="true" />
                </MultiDataTrigger>
            </Style.Triggers>
        </Style>
    </Button.Style>
</Button>
Run Code Online (Sandbox Code Playgroud)

c# validation wpf multidatatrigger

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

C#和TCP客户端(异步)具有非常高的CPU负载以及如何检测断开连接的客户端?

如果多个客户端连接,则CPU负载为90+.如果我启动监听器并且没有连接,一切都很棒.如果我有一个或多个连接,我的CPU负载非常高.

using System;
using System.Collections.Generic;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;

namespace Test.Socket
{
    public class Server
    {
        List<Thread> WorkListenerThread;

        TcpListener Listener;

        public Server()
        {
            WorkListenerThread = new List<Thread>();
        }

        public void Start()
        {
            try
            {
                Listener = new TcpListener(IPAddress.Any, 12345);
                Listener.Start();
                StartTCPClientListener();
            }
            catch (Exception) { }
        }

        private void StartTCPClientListener()
        {
            Listener.BeginAcceptTcpClient(new AsyncCallback(HandleTCPClientConnection), null);
        }

        private void HandleTCPClientConnection(IAsyncResult ar)
        {
            // Problem 1: after the first connection i have a high cpu load
            try
            {
                TcpClient …
Run Code Online (Sandbox Code Playgroud)

c# tcp tcplistener tcpclient

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

等待多个异步调用完成?

我必须从WCF服务调用三种不同的异步方法.我有以下方法,包括所有三个调用:

private async Task CreateMultipleTasksAsync()
{
    CrimcaseServiceClient client = new CrimcaseServiceClient(
        new BasicHttpBinding(),
        new EndpointAddress("http://192.168.1.100/FooService/FooService.svc")
        );

    client.GetEventCompleted += OnGotEventResult;
    client.GetEventAsync(eventInfo);

    client.GetLocationsCompleted += OnGotLocationsResult;
    client.GetLocationsAsync();

    client.GetTypesCompleted += OnGotTypesResult;
    client.GetTypesAsync();
}
Run Code Online (Sandbox Code Playgroud)

完成所有三个调用后,我需要填充一些值.但是,我似乎遇到了如何等待所有三个人首先完成的问题.

我已经尝试过这样做,使用这个调用,但它仍然没有等待所有的调用完成后再继续下一段代码:

private void GrabData()
{
    var task = Task.Run(async () => { await CreateMultipleTasksAsync(); });
    task.Wait();
}
Run Code Online (Sandbox Code Playgroud)

任何建议都会非常感激,因为我在这一点上做了什么.

感谢大家.

c# asynchronous async-await

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

确保A类只能由B类创建

我已经在SO(和其他地方)上阅读了关于这个主题的一些讨论,但没有能够收集到明确的答案.

我想确保给定的类A只能由特定的类B创建.在C++中,我将构建一个私有的构造函数,并将B指定为朋友.现在只有B才能创造A.

在C#中这样做的惯用方法是什么,如果确实有一个呢?

c# constructor factory

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

模型更改更新View-Model WPF

我有一个问题,我的模型更改更新回到我的viewmodel所以我可以显示.在这个例子中我有一个标签和一个按钮,当我按下按钮它将执行一些业务逻辑,并应更新屏幕上的标签.但是,当我的模型更改时,视图不会.我在这里做错了什么想法?

视图-

<Window.DataContext>
    <vm:ViewModel>
</Window.DataContext>
<Grid>
    <Label Content="{Binding Path=Name}"/>
    <Button Command={Binding UpdateBtnPressed}/>
</Grid>
Run Code Online (Sandbox Code Playgroud)

视图模型

public ViewModel()
{
    _Model = new Model();
}

public string Name
{
    get{return _Model.Name;}
    set
    {
        _Model.Name = value;
        OnPropertyChanged("Name");
    }
}

public ICommand UpdateBtnPressed
{
get{
_UpdateBtn = new RelayCommand(param => UpdateLabelValue());
return _UpdateBtn;
}

private void UpdateLabelValue()
{
    _Model.Name = "Value Updated";
}
Run Code Online (Sandbox Code Playgroud)

模型

private string name = "unmodified string";

public string Name
{
    get{return name;}
    set{name = value;}
}
Run Code Online (Sandbox Code Playgroud)

c# wpf mvvm

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

ConfigureAwait(true)仅适用于4.6

我在Dot Net Framework 4.5,4.5.1,4.5.2和4.6上运行了以下代码

    public async Task<int> PrintCulturesAsync()
    {
        Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-IN");

        Console.WriteLine(Thread.CurrentThread.ManagedThreadId);
        Console.WriteLine(Thread.CurrentThread.CurrentUICulture);

        await SomeMethod().ConfigureAwait(true);

        Console.WriteLine(Thread.CurrentThread.ManagedThreadId);
        Console.WriteLine(Thread.CurrentThread.CurrentUICulture);

        return 1;
    }
Run Code Online (Sandbox Code Playgroud)

我观察到,只有在Framework 4.6上,C才能onfigureAwait(true)正常工作并在await SomeMethod().ConfigureAwait(true)调用后显示相同的文化.4.5,4.5.1和4.5.2不支持吗?

.net c# thread-local-storage async-await

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

Linq表达式.Any(List <string>)

我有一个List包含(除其他外)Remark1,Remark2和Remark3.我想确保只在这些字段中写入有效的备注.今天我检查一下:

foreach (GradeRow row in Grade.GradeRows)
{
    if (!(okRemarks.Contains(row.Remark1) && okRemarks.Contains(row.Remark2) && okRemarks.Contains(row.Remark3)))
    {
        FailedCourseCodes.Add(row.CourseCode);
    }
}
Run Code Online (Sandbox Code Playgroud)

是否有Linq表达式可以执行类似.Contains(List)的操作?

c# linq

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