小编Neo*_*isk的帖子

使用WriteValue进行手动数据绑定

如果我通过设置DataSourceUpdateMode = Never来关闭绑定数据源的自动更新然后使用按钮来更新整个批次(使用binding.WriteValue),则会出现问题 - 即,仅更新第一个绑定控件的数据源.所有其他控件将重置为原始值.

这是因为当当前对象发生更改时(如上面的WriteValue之后),如果ControlUpdateMode = OnPropertyChange,则所有其他控件都会重新读取数据源中的值.

避免这个问题的标准方法是什么?

一种方法是从BindingSource派生一个类并添加一个WriteAllValues方法.此方法执行以下操作:

(1)对于每个Binding,保存ControlUpdateMode

(2)对于每个Binding,设置ControlUpdateMode = Never

(3)对于每个Binding,调用WriteValue方法

(4)对于每个Binding,将ControlUpdateMode重置为保存的值

(5)对于每个Binding,如果ControlUpdateMode = OnPropertyChange,则调用ReadValue方法.

你能看到这样做有什么问题吗?

如果使用自己的类,实现IEditableObject会解决问题吗?

在我正在研究的另一个控件中,我实现了自己的绑定.我解决这个问题的方法是使用以下代码.(我已经把它放在最低限度,我希望你能遵循它!):

Private Shared ControlDoingExplicitUpdate As MyCustomControl = Nothing

Private Sub UpdateDataSourceFromControl(ByVal item As Object, ByVal propertyName As String, ByVal value As Object)
  Dim p As PropertyDescriptor = Me.props(propertyName)
  Try
    ControlDoingExplicitUpdate = Me
    p.SetValue(item, value)
  Catch ex As Exception
    Throw
  Finally
    ControlDoingExplicitUpdate = Nothing
  End Try
End Sub

Private Sub DataBindingSource_CurrentItemChanged(ByVal sender As Object, ByVal e As System.EventArgs)
  If (ControlDoingExplicitUpdate …
Run Code Online (Sandbox Code Playgroud)

.net vb.net data-binding bindingsource winforms

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

如何显示完整尺寸的图像

<a href="FullSize.jpg"><img alt="thumb" src="thumb.jpg"></a>
Run Code Online (Sandbox Code Playgroud)

单击上面的拇指时,浏览器将显示FullSize.jpg大小以适合浏览器的客户端窗口,当光标在其上移动时,将显示"+"表示单击图像将显示完整大小.我想要做的是首先显示图像的完整大小,而无需用户单击它以获得完整大小.怎么做到这一点?

html css

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

将命令行参数添加到VB.Net应用程序

我有一个基于Windows窗体的应用程序由另一个程序员制作,我需要添加一些命令行开关,primary output exe以便我可以传递如下参数:

program.exe -reinitialise 要么 program.exe -sync

我在网上找到了一些文档,但似乎都在C#中,并且仅用于命令行程序.

该程序通过.msi安装,而.exe仅在最后构建.

所以我的问题是:

  1. 如何将命令行开关添加到VB.Net应用程序?

  2. 在哪里/什么形式我添加解析器,以便主输出.exe接受args?

.net command-line command-line-interface visual-studio-2010 command-line-arguments

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

对于每个文本框循环

我正在尝试创建一个foreach循环来检查面板中的每个TextBox,如果Text没有,则更改BackColor.我尝试过以下方法:

Dim c As TextBox
For Each c In Panel1.Controls
  if c.Text = "" Then
    c.BackColor = Color.LightYellow
  End If
Next
Run Code Online (Sandbox Code Playgroud)

但是我收到了错误:

无法将System.Windows.Forms.Label类型的对象强制转换为System.windows.forms.textbox类型

vb.net

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

特别使用加号(+)登录Powershell

除了它的自然使用,即添加两个参数,你还可以+在Powershell中使用加号来执行像这样的特殊调用:

[System.Net.WebRequestMethods+Ftp]::UploadFile
Run Code Online (Sandbox Code Playgroud)

UploadFile根据MSDN,它是一个公共静态字段,因此是双冒号::- 到目前为止一切都很清楚.但为什么Ftp课这么特别,而不是一个点.,它需要一个+?我找不到这方面的任何文件(官方或非官方).

+除了以外还有其他用途WebRequestMethods+Ftp吗?

powershell

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

使用额外信息扩展Visual Studio 2012测试资源管理器

正如一些研究的一部分,我写了Microsoft Visual Studio的单元测试框架的扩展与自定义的测试的类型,比如描述在这里.我已经创建了一个自定义属性,但我想在测试资源管理器中显示一些关于从我的自定义属性执行的测试的其他信息.

我还想知道是否有任何方法可以显示过去执行的所有单元测试的信息(因此来自我的自定义属性,但也来自默认的Visual Studio单元测试框架属性).所以我可以在图表等中显示这些测试的信息.

有没有人知道实现这个目标的好方法?

更新1 我的意思是这样的:

在此输入图像描述

c# visual-studio-2012

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

如何使用调试器处理任务中的异常?

在MSDN上研究了这篇文章,以及有关此主题的SO的一些问题/答案,但无法理解为什么下面的代码不起作用(在示例控制台应用程序中).

根据MSDN,预计会抛出AggregateException,它将包含一个带hello消息的内部异常.相反,此hello异常未处理.它发生在调试器内部.

如果您按继续或独立运行,它将按预期工作.有没有办法避免在VS中一直按下继续?毕竟,无论是内部的Try...Catch块被认为是处理在单线程编程模型.否则,调试可能是一场噩梦.

VB.NET

Sub Main()
  Try
    Task.Factory.StartNew(AddressOf TaskThatThrowsException).Wait()
  Catch ex As AggregateException
    Console.WriteLine(ex.ToString) 'does not get here until you hit Continue
  End Try
End Sub

Private Sub TaskThatThrowsException()
  Throw New Exception("hello") 'exception was unhandled
End Sub
Run Code Online (Sandbox Code Playgroud)

C#

namespace ConsoleApplication1 {
  class Program {
    static void Main(string[] args) {
      try {
        Task.Factory.StartNew(TaskThatThrowsException).Wait();
      }
      catch (AggregateException ex) {
        Console.WriteLine(ex.ToString()); //never gets here                
      }
    }

    static void TaskThatThrowsException() {
      throw …
Run Code Online (Sandbox Code Playgroud)

.net c# vb.net exception task-parallel-library

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

镜像 - 无法访问或不存在服务器网络地址

我已经阅读了很多关于如何在SQL Server 2012上配置镜像的文章.我完成了所有步骤,一切正常,直到最后一步,这不起作用.

当我在校长上运行时:

ALTER DATABASE MyDBName SET PARTNER ='TCP://1.2.3.4:5022';

我收到此错误:

无法访问或不存在服务器网络地址"TCP://1.2.3.4:5022".

当我运行上面显示的对应的ALTER语句,但在镜像上,它工作正常.

我已经尝试了本故障排除文章中的所有步骤.

重点:

  1. 主服务器和镜像服务器位于不同的数据中心,根本不在同一网络上.没有通过VPN连接.彼此完全不信任.
  2. 我可以通过主服务器上的SSMS连接镜像并运行查询.反之亦然.
  3. 我在每台服务器上配置了证书以建立信任关系.在设置和配置期间一切正常,没有错误.
  4. 我在两台服务器上配置了端点,并验证它们是活动/启用的.
  5. 我通过配置传入和传出的Windows防火墙规则在两台服务器上打开了端口5022.我可以从校长telnet到镜像,反之亦然 - 端口看起来是开放的,没有问题.
  6. 在上面提到的故障排除指南中,我尝试了步骤1-6.我没有尝试7,删除端点并重新创建,因为它们对我来说看起来非常有效和活跃.

寻找关于这个的一些想法.

sql-server sql-server-2012

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

如何通过pgAdmin将序列设置为默认值?

我有一个posgreSQL数据库,我正在使用pgAdmin III来处理它.我创建了一个名为primaryKeySequence的序列.

现在我想使用此序列作为表中主键字段的默认值.我试着插入

nextval('primaryKeySequence');
Run Code Online (Sandbox Code Playgroud)

进入pgAdmin中的默认值textfield.当我单击"确定"按钮时,会出现一条错误消息,并说该序列不存在.

做正确的方法是什么?

pgadmin

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

序列化/反序列化二维数组

出于某种原因,我之前的问题被认为过于含糊.所以让我更具体一点.

我有一个单一类型的二维数组.我想序列化它以保存在Access数据库中.

建议是将其保存为备注字段,这很好.我想稍后读取Memo字段并反序列化以检索原始数组.我在网上广泛搜索过,但在这里找不到答案.我相信我正确地序列化数组但不知道如何反序列化它.

此代码似乎适用于序列化,但我无法弄清楚如何反序列化:

Dim f As New System.Runtime.Serialization.Formatters.Binary.BinaryFormatter  
Dim ms As New MemoryStream  
f.Serialize(ms, arLHS)  
Dim byArr As Byte() = ms.ToArray
Run Code Online (Sandbox Code Playgroud)

然后我将byArr保存到备注字段中.

请提供示例代码.

vb.net serialization visual-studio-2008 winforms

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