假设我有一个List(Of Tag),Tag是一个对象.Tag,Tag.Description的一个成员是一个字符串,我想对描述成员进行逗号分隔的连接.
有没有比将Description成员读入List(Of String)然后使用Join函数更简单的方法呢?
谢谢!
vb.net string visual-studio-2005 object string-concatenation
在这个问题的一个评论中,提出默认情况下初始化C++指针会破坏与C的兼容性.
那没关系,但为什么会这样呢?我认为唯一真正重要的是因为某些原因我想要一个未初始化的指针.但我想不出有什么理由让我想拥有它.
是否有未初始化指针的用途?或兼容性问题只是兼容行为之一(即不增加开销)而不是破坏代码之一?
我正在使用Visual Studio 2005开发VB.NET.
我在一个表单上有一个ComboBox(myCombo),它在Load方法中填充.
我还处理了myCombo.SelectedIndexChanged来更改表单上的标签.
编辑:我添加事件处理程序的方式是双击设计器上的组合框.然后在代码视图中出现了骨架代码.
看起来正在发生的是表单加载时,每次将项添加到myCombo时,SelectedIndexChanged都会被触发.
这不是我想要的,但我认为只有当用户更改选择时才会调用另一个事件处理程序.
这是我的一些代码:
Private Sub myDlg_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' this is all I do with myCombo in this sub
list = GetListOfItemsToAdd()
myCombo.DataSource = list
myCombo.DisplayMember = "DisplayMember"
myCombo.ValueMember = "ValueMember"
End Sub
Run Code Online (Sandbox Code Playgroud)
有人能指出我正确的方向吗?
一如既往地谢谢.
更新: 我使用的解决方案是在事件生成器之后删除Handles子句,并在上面的"End Sub"之前添加它:
AddHandler myCombo.SelectedIndexChanged, AddressOf myCombo_SelectedIndexChanged
Run Code Online (Sandbox Code Playgroud)
感谢大家!
下午好大师,
我对基本的套接字编程和IO :: Socket模块非常熟悉,但我现在需要编写一些我之前没有遇到过的东西.它将是一个3层应用程序.第一层是事件循环,在遇到某些事件时向上游发送消息.第二层是"中间件"服务器,其中(除其他外)充当消息库.第三层是cgi应用程序,它将更新图形显示.
我很困惑如何设置服务器以接受来自多个客户端的单向连接,并与另一方面的cgi应用程序进行双向通信.我可以单独执行这些任务中的任何一个,而不是在同一个脚本中(尚未).我的问题有意义吗?我想坚持使用IO :: Socket模块,但无论如何都不是必需的.我不是要求优秀的代码,只是建议套接字的建议以及如何通过服务器从一个客户端与另一个客户端进行通信.
此外,让cgi应用程序在服务器上查询新消息,或让服务器将新消息上游推送到cgi应用程序更有意义吗?图形更新需要接近实时.
先感谢您,
达人
我是Access VBA的新手,并使用表单向导创建表单,该表单在表中显示记录.那是小菜一碟.
但是,我从表单中获得的行为是,当我移动记录时,记录的更新会自动发生.
我想要的是只有当我点击我放在表单中的"更新"按钮时才会发生更新.
看起来我可以从头开始构建表单,以编程方式更新所有(无界)控件,然后以编程方式从控件更新记录,但这似乎太多了.
有没有办法从Access中"关闭"自动更新行为,或使用VBA代码?
谢谢!
一位同事正在清理几个图书馆.在这样做的过程中,他一直在阅读C++的API设计,并讨论如何在C++类中显式启用或禁用复制.这与Sutter和Alexandrescu在他们的C++编码标准中所说的相同.
他同意应该遵循这个建议,但是这两本书似乎都没有说明什么是指示何时启用或禁用的指导原则.
任何指导方式都是这样或那样的?谢谢!
这是让我想到这一点的确切情况.
我有自动生成下一个逻辑项目编号的功能.该项目编号的一部分包括项目编号的创建年份.我们现在在2010年,所以日期中最重要的部分(为了我的项目编号)是"10"并且是两个字符长.如果我的程序碰巧在2009年执行,它是当前编码的方式,我会得到一个错误的项目编号,因为我的系统期望两位数的日期(10)而不是一个数字(9).
我的问题根本不是关于我的具体情况,是否做一个字符串操作是一个好主意:)但更多的是基于我的标题中陈述的原则.编写在历史记录中无法正常运行的软件是不是一个坏主意?您是否遇到过类似情况,您采取了什么路线?为什么?
嘿所有,我现在正在考试,我似乎无法理解这个概念.问题是,如果您给出了一系列学生记录,记录成员是学生姓名和成绩,您如何按年级对其进行排序.教授给出了他称之为"分布计数排序"的例子.我无法理解它,并希望有人可以给我下面的代码的伪代码或算法,谢谢:)
Function Distribution_counting_sort(S, n){
//Input: a student array S of n records
//Output: a sorted array (wrt grade) NS
int count[101]; /*init to 0’s */
/* counting */
for (i = 0; i < n; i++) count[S[i].grade]++;
/* accumulating */
count[0]--;
for (i = 1; i < 101; i++) count[i] = count[i -1] + count[i];
/* distribution */
for (i = 0; i < n; i++) NS[count[S[i].grade]--] = S[i];
Run Code Online (Sandbox Code Playgroud) 我遇到的一些表单初始化问题被追溯到.Designer.cs文件,覆盖了我在用户控件的构造函数中初始化的值.
我设计了一个component(MyUserControl)并将其插入到form(MainForm)中.我后来在MyUserControl构造函数中添加了一些成员初始化,但是MainForm.Designer.csfor 的代码InitializeComponent()是陈旧的,稍后函数中的代码覆盖了我之前在该函数中调用的构造函数中的新初始化.
所以,从本质上讲,我确实触发了一些重写Mainform.Designer.cs但其他活动没有.
是否有一个很好的参考来描述设计师何时触及*.Designer.cs文件?(或者它是一个简单的规则?)Jared Par将我指向DesignerSerializationVisibilityAttribute类,但这似乎是森林中的一棵树?
我有一个带有System.Windows.Forms.NumericUpDown控件的表单.
假设范围是从0到100,并且当前值(通过微调器到达)是100.我可以输入一个超出允许范围的数字(比如567),但是当我在表单上单击"确定"时重置该值,它只是静默地将超出范围值设置为100并关闭表单.
客户想要一个明确的消息,即该号码超出范围.所以,我看着NumericUpDown.Text关闭窗体检查属性,但该属性给了我"100"而不是"567".
在哪里(或如何)可以"捕获"控件中出现的文字是"567"的事实?