使用此代码,我可以在运行时创建标签:
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窗体)
我在资源文件夹(Properties.Resources)中创建了一个文件夹.我怎样才能使用那里的图像?
我有一个转换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) 我正在尝试在验证文本框时禁用/启用按钮.
我得到了验证工作(我知道它可行,因为它改变了设计).但是,当文本框验证时,我似乎无法将按钮从禁用更改为启用.
这是我的代码:
<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) 如果多个客户端连接,则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) 我必须从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)
任何建议都会非常感激,因为我在这一点上做了什么.
感谢大家.
我已经在SO(和其他地方)上阅读了关于这个主题的一些讨论,但没有能够收集到明确的答案.
我想确保给定的类A只能由特定的类B创建.在C++中,我将构建一个私有的构造函数,并将B指定为朋友.现在只有B才能创造A.
在C#中这样做的惯用方法是什么,如果确实有一个呢?
我有一个问题,我的模型更改更新回到我的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) 我在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不支持吗?
我有一个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# ×10
async-await ×2
linq ×2
wpf ×2
.net ×1
asynchronous ×1
constructor ×1
factory ×1
foreach ×1
labels ×1
mvvm ×1
runtime ×1
tcp ×1
tcpclient ×1
tcplistener ×1
validation ×1
winforms ×1