天道酬勤,学无止境

vb.net

Vb.Net - Accessing text in controls on another form

问题 我对 vb.net 相当陌生,希望能够从另一个打开的表单访问值(例如文本框中的 .text)。 在我的应用程序中,我从主窗体打开一个窗体,当我尝试访问主窗体上的控件中的文本时,我无法看到控件上的 .text 值。 我可以很好地遍历主窗体上的所有控件,但是当我想查看实际值时,所有控件都是空的。 我的控件(例如文本框和组合框)位于选项卡控件和组框内。 有没有办法使打开表单上的所有 .text 或值都可以从另一个打开表单中使用? 这是我在主窗体上循环控件的方式。 Try For Each Tp As TabPage In UserData.UserTabControl.TabPages 'Name of Tabcontrol is UserTabcontrol For Each gbx As GroupBox In Tp.Controls For Each ctrl As Control In gbx.Controls If ctrl.Name = "UserName" Then MsgBox(UserData.UserName.Text) 'Messagebox here is empty End If Next ctrl Next gbx Next Tp Me.Close() Catch ex As Exception MsgBox(ex.Message) End Try

2022-07-11 09:34:44    分类:技术分享    vb.net   visual-studio-2012

How can I set up keyboard shortcuts for a Windows Forms TabControl?

问题 是否有一种简单的方法可以为 Visual Studio 2010 中的选项卡控件中的选项卡设置键盘快捷键? 我可以设置一些属性吗? 我在网上看了看,但看到的所有文章都非常混乱。 回答1 不幸的是,没有任何这样的属性,但实现这个功能也并不困难。 根据应用程序的设计,有两种方法值得考虑。 如果承载TabControl的表单已经使用了菜单系统,那么设置起来几乎是微不足道的。 首先,您需要添加一个菜单命令来切换到TabControl中的每个TabPage 。 然后,您可以简单地为该菜单项添加一个键盘快捷键(这是MenuItem / ToolStripMenuItem的一个简单属性),以便每当按下该键时,都会执行该菜单命令,并切换到相应的TabPage 。 但是,菜单系统可能不适用于每种形式。 如果是这种情况,您将不得不做更多的工作。 基本上,您需要将承载TabControl的表单的KeyPreview属性设置为 True 并检测您要用于切换选项卡的键盘快捷键。 设置窗体的 KeyPreview 属性允许该窗体在将这些事件传递到具有焦点的控件之前接收键事件。 这对于此方法的工作至关重要,因为否则,表单的KeyDown事件处理程序中的代码将永远不会检测到您想要捕获的击键。 只有在表单完成处理每个击键后,它们才会被传递到通常接收它们的控件上。 因此,一旦您设置了此属性,您需要为表单的

2022-05-17 04:02:13    分类:技术分享    vb.net   winforms   keyboard-shortcuts   tabcontrol   hotkeys

Are generic operator overloads allowed in .NET 4?

问题 我假设“否”,但我无法在 Google 上找到支持这一假设的确凿证据。 使用'vb.net“通用运算符重载”'的关键字会产生1个结果,删除'overload'会给出更多,但没有直接说明这个问题。 我的想法是给定一个抽象类,能够实现派生类可以在这种情况下使用的泛型运算符重载会很棒,当所述运算符重载必须返回派生类的新副本时,代码对于每个重载都是相同的。 如果那有意义的话。 这涉及到我之前关于自定义 Enum 类和重载按位运算符( And 、 Or 、 Not和 & Xor )的问题,但是,这种特殊的想法是出于对“可以做到吗?”的好奇。 这是我的一个自定义枚举的基本外观: 父EBase没有什么特别之处,它只是托管通用的Name和Value属性,外加两个共享运算符op_Equality和op_Inequality 。 Friend NotInheritable Class EExample Inherits EBase Private Sub New() End Sub Friend Shared Function GetValue(ByVal Name As String) As Enums Dim tmpOffset As Int32 = Array.IndexOf(_Names, Name) Return If(HasContent(Name), If(tmpOffset <>

2022-05-17 03:40:31    分类:技术分享    vb.net   generics   operator-overloading

How to save many object (with the same class) to txt file and binding those object with listbox VB.NET

问题 我尝试编写一个简单的项目来将数据保存到 txt 文件,读取它并使用绑定数据来显示它。 我的项目是这样的。 当我将 ID 人员添加到“添加 ID”文本框(按钮“添加 ID”附近的文本框)时。 它会将 ID 添加到列表框和“ID 名称”文本框。 使用此 IDName,我插入 FirstName 和 LastName 作为第一人称并保存人名。 然后,我在“添加 ID”文本框中添加新 ID 并填写名字,姓氏并再次保存 我参考此页面 http://vbnetsample.blogspot.de/2007/12/serialize-deserialize-class-to-file.html?m=1 将数据保存和读取到 txt 文件。 它运行正常。 但我的问题是,当我用 ID 2 保存人 2 时,人 1 被覆盖。 我想我可以将 Person 保存到 List Person 中。 但是当我想更新任何人的数据时会很困难。 不知道有没有办法保存更新每个人。 顺便说一句,我如何通过在列表框中绑定数据来显示数据。 这是我的代码 Imports System.Runtime.Serialization.Formatters.Binary Imports System.IO Public Class Form1 Public pPerson As New Person 'Serialize and

2022-05-16 15:10:04    分类:技术分享    vb.net

BC30420 'Sub Main' was not found error in a Windows Form app

问题 我创建了一个 Windows 窗体应用程序。 据我了解,您不必在 Windows 窗体应用程序中使用 Sub Main()。 但是,当我构建项目时出现此错误: BC30420 'Sub Main' was not found in 'LoanCalculator.Module1'. 首先我不知道为什么它说'LoanCalculator.Module1'。 我的表单和我的班级都被命名为 LoanCalculator.vb。 当我开始这个项目时,我开始在原始模块中编写代码。 然后我添加了一个模块,将其命名为“LoanCalculator”,并将我编写的代码移至该模块并在那里完成。 我删除了原始模块。 现在它构建得很好,除了这个错误。 这是我的代码: Imports System.Windows.Forms Public Class LoanCalculator Private Sub Calculate() Dim str As String Dim intLoanAmt As Integer Dim intDown As Integer Dim intFees As Integer Dim intBalance As Integer Dim dblIntsRate As Single Dim intLoanTerm As Integer Dim sngInterestPaid

2022-05-16 13:38:12    分类:技术分享    vb.net

Why is attached property property changed event only firing one time?

问题 我有一个绑定到对象列表的列表框。 对于每个列表项,我想要一个矩形,其填充颜色由绑定对象的一些属性决定。 所以我做了以下事情: 确保在我的对象上实现了 INotifyPropertyChanged。 创建了一个类以将我感兴趣的属性公开为附加属性。 将对象的属性绑定到矩形的附加属性创建了一种样式,该样式使用触发器根据附加属性设置矩形填充。 这有效,但仅在对象的属性第一次更改时。 之后,当数据对象的属性更改时,附加属性似乎没有收到通知。 我已经仔细检查了,我的数据对象正在引发 INotifyPropertyChanged 事件。 可能是什么问题呢? <Rectangle Style="{StaticResource RecordStateRectangleStyle}" Width="10" Height="10" Stroke="Black" local:RecordAttachment.RecordState="{Binding Path=RecordState}" local:RecordAttachment.IsDeleted="{Binding Path=IsDeleted}" /> 样式: <Style x:Key="RecordStateRectangleStyle" TargetType="Rectangle"> <Style.Resources>

2022-05-16 11:58:08    分类:技术分享    c#   wpf   vb.net

date object prefixing with # vb.net

问题 我正在编写使用 VB.net 进行日期转换的示例代码。 我面临的问题是它以哈希(#)符号作为前缀和后缀。 例如:#2010-12-12#。 如何删除 # 符号以便我只能约会。 回答1 鉴于您的评论,听起来这实际上可能只是在调试器中显示DateTime的问题。 它向您展示了您可以在 VB 中使用的DateTime文字形式。 这有点像 C# 开发人员担心他们的字符串中有双反斜杠,而实际上这只是调试器显示转义。 DateTime本身并不真正包含散列,并且任何正常格式的字符串也不会产生散列。 如果您想在没有哈希的情况下查看它,请添加一个手表 arrTxLifeReq(0).TransExeDate.ToString() 作为您真实程序一部分的代码是否有任何问题? 如果是这样,请发布这些问题的详细信息,而不仅仅是调试器显示的内容。 回答2 只需将 # 替换为 '' 例如 string dt = "#2010-12-12#"; dt = dt.Replace ("#","");

2022-05-16 08:49:10    分类:技术分享    vb.net

AES Key and IV generate with 16 character length

问题 我正在寻找如何在 vb.net 中生成 AES 密钥和 IV。 http://programmers-en.high-way.info/vb/aes.html 如上链接,有 AesIV 和 AesKey 的声明。 但我不想对 AesIV 和 AesKey 使用硬代码。 Private Const AesIV As String = "!QAZ2WSX#EDC4RFV" Private Const AesKey As String = "5TGB&YHN7UJM(IK<" 我想要做的是我想像上面的例子一样自动生成随机密钥和 IV 完全相同的 16 个字符。 请帮助我的人。 谢谢... 回答1 使用 RNGCryptoServiceProvider 生成加密强序列。 Imports System.Security.Cryptography Public Function GenerateKey(ByVal Length As Integer) As Byte() Dim ReturnArray(Length - 1) As Byte Using RNG As New RNGCryptoServiceProvider RNG.GetBytes(ReturnArray) End Using Return ReturnArray End Function 示例用法: AES.Key =

2022-05-16 07:07:03    分类:技术分享    vb.net   encryption   cryptography   aes

Why is my Boolean not being assigned the correct value?

问题 我有这个 ASP.Net 代码: <select name="subcategory" color="<%=Session("TextColor")%>" style="font: 8pt arial" onchange="UpdateFlag=true;"> <% if not IsNewBusiness then %> <option value="0">Existing <option value="1">Organic Growth <% else %> <option value="0">New <option value="1">Assumed <% end if %> </select> ...应该基于布尔 IsNewBusiness 的值,将一对项目中的一个或另一个加载到 html 选择元素。 但是,相同的逻辑始终等同于 true(“not IsNewBusiness”),并且前两项(“Existing”和“Organic Growth”)始终是填充 select 元素的项。 分配值的代码是: Dim IsNewBusiness As Boolean . . . currentYear = Year(Now) SQLString = "Select NewBiz from MasterUnitsprojSales where CYear = " &

2022-05-16 06:27:04    分类:技术分享    asp.net   vb.net   html-select

sendmessage api to select a specific index of combobox control

问题 我正在编写一个应用程序,该应用程序可以选择具有特定索引的另一个应用程序的ComboBox 。 例如,我想通过挂钩从我的应用程序中选择第二个列出的项目“Adobe Flash 播放器”。 ComboBox应用程序不是我的,所以我无法修改目标应用程序。 通常,可以使用 VB.Net 中的Sendmessage API 来放置文本或单击按钮。 可以检索该ComboBox的句柄值(hWnd)。 我想知道要使用哪个函数(api)以及应该使用哪个值。 谢谢你。 回答1 您可以将 CB_SETCURSEL 消息发送到组合框。 SendMessage 的wParam参数应该是要设置为选定索引的项目的从零开始的索引,而lParam在这里没有用。 应用程序发送 CB_SETCURSEL 消息以选择组合框列表中的字符串。 如有必要,列表会将字符串滚动到视图中。 组合框的编辑控件中的文本会更改以反映新的选择,并且列表中的任何先前选择都将被删除。 wParam :指定要选择的字符串的从零开始的索引。 如果此参数为 –1,则删除列表中的任何当前选择并清除编辑控件。 lParam :不使用此参数。 C# 示例 [System.Runtime.InteropServices.DllImport("user32.dll")] static extern IntPtr SendMessage(IntPtr

2022-05-16 03:29:31    分类:技术分享    .net   vb.net   winforms   winapi   combobox