Tag: vb.net

请向我解释扩展方法

我刚看了一下这篇文章: 你见过的扩展方法的最佳或最有趣的用途是什么? 我从来没有听说过扩展方法。 他们适用于所有语言吗? 他们有什么意义? 在那个特定的post中,我不明白这个例子。

通过在datagridviewcolum中指定DefaultCellStyle.Format值来显示百分比

With datagridview.Columns(“PricePerUnit”) .ValueType = Type.GetType(“System.Decimal”) .DefaultCellStyle.Format = “C” End With 数据表绑定到datagridview并在上面的代码中a如果我只是将值为5的行添加到“PricePerUnit”列,它将在datagridview列中显示为$ 5.00 同样地,我想要显示类似的内容如果我只是将值为5的行添加到“DiscountPercentage”列中 它应显示为5.00% 我需要一个字符串值来分配给DefaultCellStyle.Format来实现这一点。 如果我使用DefaultCellStyle.Format=”P”它会自动将其乘以100,因此对于输入5,它显示为500.00%而不是5.00% 有任何想法吗? 解决 dtb帮助我这样做(感谢他) number.ToString(“0.00\%”)获取十进制数和2个十进制整数

调用Web服务方法在VS 2008中返回null

我的情况:我有一个Winform应用程序(.NET 2008),我必须使用Web服务(Java Axis)。 我使用SoapUI测试Web服务,它工作正常。 但是,当我在VS 2008中通过服务引用使用它时,它返回null。 显然,它似乎是一个众所周知的问题,它有一个很好的解决方案。 对不起,这次我找不到解决方案! 还有其他一些像我这样的情况( 像这样 ),但它对我不起作用。 这是WSDL: 这是自动定义VS 2008已创建: [System.CodeDom.Compiler.GeneratedCodeAttribute(“System.ServiceModel”, “3.0.0.0”)] [System.ServiceModel.ServiceContractAttribute(Namespace=”http://wds2.ar.bsch:9089/WSFDAxis/services/SOAPMessageDispatcher”, ConfigurationName=”ServiceReference1.SOAPService”)] public interface SOAPService { // CODEGEN: Se está generando un contrato de mensaje, ya que la operación process no es RPC ni está encapsulada en un documento. [System.ServiceModel.OperationContractAttribute(Action=””, ReplyAction=”*”)] [System.ServiceModel.XmlSerializerFormatAttribute()] WindowsFormsApplication3.ServiceReference1.processResponse process(WindowsFormsApplication3.ServiceReference1.processRequest request); } [System.Diagnostics.DebuggerStepThroughAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute(“System.ServiceModel”, “3.0.0.0”)] […]

C#开关与VB案例陈述

我最近从VB切换到C#。 我注意到的一件事是,在C#中,我在使用比较作为案例的一部分时遇到了问题。 我不确定如何用文字解释它,所以这里是我想要做的一个例子。 在VB中,我的代码看起来像这样,并且工作得很好。 Select Case ExamScore Case Is >= 90 Grade = “A” Case Is >= 80 Grade = “B” Case Is >= 70 Grade = “C” Case Is >= 60 Grade = “D” Case Else Grade = “F” End Select 另一方面,在C#中,Visual Studio告诉我“> =”是一个无效的表达式。 switch (examScore) { case >= 90: grade = “A”; break; […]

如何在两个不同的选项卡上显示相同的控件?

我正在使用VB.NET 我需要在2个不同的选项卡上显示相同的控件(ListBox)。 是否必须创建2个不同的ListBox实例?

不能将Enumerable.Count与List一起使用,编译器假定为List.Count

我还没有注意到这种行为,可能是因为我更喜欢VB.NET中的查询语法,并将查询和执行方法分成不同的语句。 如果我尝试编译以下简单查询: Dim wordList As List(Of String) = New List(Of String) Dim longWords As Int32 = wordList.Count(Function(word) word.Length > 100) 编译器不喜欢这样,因为他希望List.Count没有参数: “Public Readonly Property Count As Integer”没有参数,其返回类型无法编入索引。 如果我将它声明为IEnumerable(Of String)它按预期工作: Dim wordSeq As IEnumerable(Of String) = New List(Of String) Dim longWords As Int32 = wordSeq.Count(Function(word) word.Length > 100) 为什么会这样? 什么阻止编译器使用Enumerable扩展方法Count而不是ICollection.Count属性。 请注意,我添加了Imports System.Linq , Option Strict和Option Infer都On […]

你如何获得队列中的第一个和最后一个项目?

假设我有一个滚动的值集合,我指定集合的​​大小,每当添加新值时,超出此指定大小的任何旧值都将被删除。 显然(我已经测试了这个)用于此行为的最佳集合类型是队列: myQueue.Enqueue(newValue) If myQueue.Count > specifiedSize Then myQueue.Dequeue() 但是,如果我想计算队列中第一个和最后一个项目之间的差异怎么办? 显然我无法通过索引访问项目。 但是,从队列切换到实现IList的东西看起来有点矫枉过正,编写类似Queue的新类也是如此。 现在我有: Dim firstValue As Integer = myQueue.Peek() Dim lastValue As Integer = myQueue.ToArray()(myQueue.Count – 1) Dim diff As Integer = lastValue – firstValue 对ToArray()这种呼吁困扰着我,但是一个更好的选择并没有找到我。 有什么建议?

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

我在MSDN上研究了这篇文章 ,以及有关此主题的SO的一些问题/答案,但无法理解为什么下面的代码不起作用(在示例控制台应用程序中)。 根据MSDN,预计会抛出AggregateException,它将包含一个带有hello消息的内部exception。 相反,这个helloexception未处理。 它发生在调试器内部。 如果按“继续”或“独立运行”,则按预期工作。 有没有办法避免在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 C# namespace ConsoleApplication1 { class Program { static void Main(string[] args) […]

移除节点后Treenode不扩展

我正在尝试在扩展节点(父节点)时替换树节点。 更换工作正常。 但扩张没有发生。 你有什么工作吗? 代码如下: public void Populate_Node(Object sender, TreeNodeEventArgs e) { foreach (System.Web.UI.WebControls.TreeNode tn in tvContentTree.Nodes) { tn.ChildNodes.RemoveAt(1); tn.ChildNodes.AddAt(1,ParentNode); } } 如果我评论这条线 “tn.ChildNodes.RemoveAt(1);” 然后扩展工作正常。 所以removeat函数导致了这个问题。

在流式传输时从Web请求中使用StreamReader流.NET?

我正在尝试使用Twitter流式传输API,我正在尝试为用户打开一个流,以便在事件发生时使用它们。 我正在使用一组标准的类来对twitter进行REST api调用。 在“GET”调用中使用https://userstream.twitter.com/2/user.json时 ,响应流永远不会结束…我正在打开StreamReader并按照我对任何其他REST调用的方式读取响应推特。 这对其他人来说可能是显而易见的,但我如何“消费”这个流…有没有办法在读取时读取StreamReader(意思是在它关闭之前)? 或者可能有一种不同的方法我可以用来使用这个流….再次,我道歉,如果这接缝是一些基本的,但我现在无法弄明白…提前感谢任何建议还是帮忙!!! 这是我开始对此进行故障排除的原始来源…这个方法是由我在LinkedIn上的论坛中找到的一组C#类编造的。 在读取“responseData = responseReader.ReadToEnd()”的行中,该方法开始“喝”流…但是这样做就像一个无底杯……在关闭之前实时读取这个数据流(这是基本上直到我停止调试或杀死进程)是我正在解决的问题。 Private Function WebResponseGet(ByVal webRequest As HttpWebRequest) As String Dim responseReader As StreamReader = Nothing Dim responseData As String = “” Try responseReader = New StreamReader(webRequest.GetResponse().GetResponseStream()) responseData = responseReader.ReadToEnd() Catch Throw Finally webRequest.GetResponse().GetResponseStream().Close() responseReader.Close() responseReader = Nothing End Try Return responseData End Function 更新及相关问题: 所以,我想出了以下方法来保持流打开,并将其写入文件(这不是最后的方法,我只是测试,开发这样做的最佳方式:) […]