小编Mar*_*age的帖子

在Visual Studio中管理大量重叠控件

我在表单上的相同位置使用不同的控件集.默认情况下,所有都是visible = false,然后当用户在组合框下拉控件中选择特定值时,控件的某些子集将设置为可见.

从用户的角度来看,这很有效,因为它们只能看到所需的控件.

但是,由于控件占用窗体上的相同位置,因此很难在Visual Studio设计视图中管理这些控件.

有没有办法在Visual Studio中对这些重叠控件的集合进行分组,以便我可以快速轻松地选择整个控件子集?有没有办法在设计视图中隐藏某些控件?现在,在开发时,所有东西都堆叠在一起,因此难以管理这些控件.

c# controls visual-studio-2008 visual-studio winforms

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

带触摸屏的双/多显示器

假装我有2台显示器.主显示器只是普通的PC桌面显示器,另一个是触摸屏.当我加载程序(WinForm,WPF,...)时,它将加载在主监视器上.

问:如果我将程序替换为触摸屏,我怎么知道当前的屏幕/显示器/显示器是触摸屏还是启用了触摸屏?

换句话说,如何检测当前屏幕/显示器/监视器及其设置?

到目前为止,我使用的是Screen类(Windows.Forms),TabletClass(Windows.Input)和DLLImportUser32.dll(GetSystemMetrics()).它们中的任何一个或它们的组合都不起作用.

我希望找到像:Monitor.Current.IsTouch或者Display.CurrentDisplay.TouchEnabled

c# wpf multiple-monitors touch winforms

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

代码合约怎么了?

几年前,在.NET 4发布之前,代码合同遍布整个博客圈,.NET 4中包含的运行时组件以及更昂贵的Visual Studio 2010版本中提供的静态检查程序.

代码合同的嗡嗡声似乎已经消失,人们是否在生产中使用它?微软研究院还在做更多的工作吗?

.net code-contracts

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

引用常见类型的XSD Gen类

我正在使用XSD在C#中定义我的DTO类型.我正在使用XSD.exe来生成XSD的类.

我有一个定义地址类型的Common.xsd,我想在多个类中使用它:

  <xs:complexType name="Address">
    <xs:sequence>
      <xs:element name="Street1" type="xs:string"/>
      <xs:element name="Street2" type="xs:string"/>
      <xs:element name="City" type="xs:string"/>
      <xs:element name="State" type="xs:string"/>
      <xs:element name="Zip" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="Address" type="mhm:Address"/>
Run Code Online (Sandbox Code Playgroud)

我在XSD公司中引用它:

  <xs:include schemaLocation=".\Common.xsd"/>
  <xs:complexType name="Company">
    <xs:sequence>
      <xs:element name="AdmCode" type="xs:string"/>
      <xs:element name="CompanyCode" type="xs:string"/>
      <xs:element name="Name" type="xs:string"/>
      <xs:element ref="mhm:Address"/>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="Company" type="mhm:Company"/>
Run Code Online (Sandbox Code Playgroud)

员工XSD:

  <xs:include schemaLocation=".\Common.xsd"/>
  <xs:complexType name="Employee">
    <xs:sequence>
      <xs:element name="EmployeeNumber" type="xs:int"/>
      <xs:element name="FirstName" type="xs:string"/>
      <xs:element name="LastName" type="xs:string"/>
      <xs:element name="Address" type="mhm:Address"/>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="Employee" type="mhm:Employee"/>
Run Code Online (Sandbox Code Playgroud)

我使用这个命令行生成类:

xsd .\XSD\Common.xsd /c /o:. /n:"DomainModel"
xsd .\XSD\Employee.xsd /c /o:. …
Run Code Online (Sandbox Code Playgroud)

c# xsd code-generation xsd.exe

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

C#SaveFileDialog在特定文件夹中

SaveFileDialog用来选择我想要保存文件的路径.我设置InitialDirectory为某个文件夹,但我想将保存位置限制为该文件夹或该文件夹的子文件夹.这可能吗?

SaveFileDialog dialog = new SaveFileDialog();
dialog.InitialDirectory = "SomePath"//this is the path that I want to be root folder
Run Code Online (Sandbox Code Playgroud)

c# savefiledialog

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

登录时处理防伪造错误,同时已登录?ASP.NET MVC

当用户登录时,然后进入登录页面.如果他再次尝试登录,则会出现Anti forgery Error.

防伪令牌无法解密.如果此应用程序由Web场或群集托管,请确保所有计算机都运行相同版本的ASP.NET网页,并且配置指定显式​​加密和验证密钥.AutoGenerate不能在群集中使用.

我得到的另一种错误是:

提供的防伪令牌适用于与当前用户不同的基于声明的用户.

如何处理这种防伪造错误?

c# asp.net asp.net-mvc antiforgerytoken

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

在.NET中以高速率发送SMTP电子邮件

我有一个.NET服务,它处理后台线程上的队列,并从队列中的项目以非常高的速率发送大量的小电子邮件(如果可能的话,每秒100条消息).目前,我使用,SmtpClient.Send()但我担心它可能会妨碍性能.

每次调用Send()都会经历一个完整的循环,打开套接字,执行SMTP会话(HELO,MAIL FROM,RCPT TO,DATA)并关闭套接字.在伪代码中:

for each message {
  open socket
  send HELO
  send MAIL FROM
  send RCPT TO
  send DATA
  send QUIT
  close socket
}
Run Code Online (Sandbox Code Playgroud)

(编辑:这句话SmtpClient.Send()实际上是假的,正如我在答案中解释的那样.)

我认为以下伪代码将更加优化:

open socket
send HELO
for each message {
  send MAIL FROM
  send RCPT TO
  send DATA
}
send QUIT
close socket
Run Code Online (Sandbox Code Playgroud)

我是否应该关注SmtpClient.Send()高速发送电子邮件时的表现?我有哪些优化性能的选择?

.net email smtp

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

使用Rx阻止(并可能超时)异步操作

我正在尝试使用Reactive Extensions for .NET重写一些代码,但我需要一些关于如何实现目标的指导.

我有一个类在低级库中封装了一些异步行为.想想要读取或写入网络的东西.当类启动时,它将尝试连接到环境,并且当成功时,它将通过从工作线程调用来发回信号.

我想将此异步行为转换为同步调用,并在下面创建了一个极为简化的示例,说明如何实现:

ManualResetEvent readyEvent = new ManualResetEvent(false);

public void Start(TimeSpan timeout) {
  // Simulate a background process
  ThreadPool.QueueUserWorkItem(_ => AsyncStart(TimeSpan.FromSeconds(1)));
  // Wait for startup to complete.
  if (!this.readyEvent.WaitOne(timeout))
    throw new TimeoutException();
}

void AsyncStart(TimeSpan delay) {
  Thread.Sleep(delay); // Simulate startup delay.
  this.readyEvent.Set();
}
Run Code Online (Sandbox Code Playgroud)

AsyncStart在工作线程上运行只是模拟库的异步行为的一种方式,并不是我的实际代码的一部分,其中低级库提供线程并在回调上调用我的代码.

请注意,该Start方法将TimeoutException在超时间隔内抛出if start.

我想重写此代码以使用Rx.这是我的第一次尝试:

Subject<Unit> readySubject = new Subject<Unit>();

public void Start(TimeSpan timeout) {
  ThreadPool.QueueUserWorkItem(_ => AsyncStart(TimeSpan.FromSeconds(1)));
  // Point A - see below
  this.readySubject.Timeout(timeout).First();
}

void AsyncStart(TimeSpan delay) …
Run Code Online (Sandbox Code Playgroud)

.net c# system.reactive

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

将值分配给解除引用的void指针

我正在用c ++编写一个类,它支持任何类型的变量来帮助我完成未来的项目.问题是,当我尝试为void*变量赋值时,我得到错误:void*不是指向对象的指针类型.这是代码:

int main (void) {
    void* a;
    int x;
    a = malloc(sizeof(int));
    x = 120;
    ((int)(*a)) = x;
    printf("%d",((int)*a));
    free(a);
    system("pause");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我看到它就像我试图在为a保留的内存块中分配x的值.我希望存储在x中的值存储在a的内存块中.可以帮我吗?

c

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

.net Observable'OrserveOn'一个后台线程

我试图使用.net Observable类实现一个简单的Observer模式.我的代码看起来像这样:

Observable.FromEventPattern<PropertyChangedEventArgs>(
    Instance.User,
    "PropertyChanged")
          .Where(e => e.EventArgs.PropertyName == "FirstName")
          .ObserveOn(Scheduler.ThreadPool)
          .Subscribe(search => OnFirstNameChanged(search.EventArgs));

Observable.FromEventPattern<PropertyChangedEventArgs>(
    Instance.User,
    "PropertyChanged")
          .Where(e => e.EventArgs.PropertyName == "LastName")
          .ObserveOn(Scheduler.ThreadPool)
          .Subscribe(search => OnLastNameChanged(search.EventArgs));
Run Code Online (Sandbox Code Playgroud)

我希望观察者在后台线程上运行,但是我希望它们都在相同的后台线程上运行(对于我们真正的实现,将每个侦听器放在不同的线程上会非常复杂).

即我希望所有的OnXXXChanged逻辑都在UI线程以外的线程上执行,但是Observing我想确保它们在同一个线程上以正确的顺序运行,而不是在整个线程池上运行.

如何修改上述内容?

另外,在某种程度上相关的说明,是否有任何好的示例代码示例使用Observable该类来实现此模式?

.net c# system.reactive observable

8
推荐指数
2
解决办法
4217
查看次数