【发布时间】:2016-03-26 07:29:22
【问题描述】:
我有textbox1、textbox2 和textbox3 我想根据textbox1 的值自动设置textbox2 和textbox3 的值,它具有如下自动完成方法...
在 textbox1 完成自动完成后,我应该如何在 while 子句中自动设置 textbox2 和 textbox3 的值?
两天后我正在处理这些错误表单,我的代码中的所有内容都是公开的...我想我想知道新类应该在 namespace { Class class_name} 这样的命名空间范围内定义,但我正在定义类而不是像name spaces {class Class_name1 {classs Class_name2 } } 这样的另一个类,但我的问题是,当我将我的类放在名称空间范围内时,我遇到了很多错误,并且它无法识别很多关键词......所以请问这是问题吗?如果是的话,请你带领我解决这个问题???
公共类 PopulateProduct { 公共字符串 ProductDesc { 获取;放; } 公共小数单价{得到;放; } }
Dictionary<string, PopulateProduct> dict = new Dictionary<string, PopulateProduct>();
public void load()
{
string connstr = "user id=rawpic;password=admin";
string cmdtxt = @"select PRODUCT_ID,DESCRIPTION,UNIT_PRICE
from products";
AutoCompleteStringCollection autocom = new AutoCompleteStringCollection();
TB_PRODUCT_ID.AutoCompleteMode = AutoCompleteMode.Suggest;
TB_PRODUCT_ID.AutoCompleteSource = AutoCompleteSource.CustomSource;
TB_PRODUCT_ID.AutoCompleteCustomSource = autocom;
using (OracleConnection conn = new OracleConnection(connstr))
using (OracleCommand cmd = new OracleCommand(cmdtxt, conn))
{
try
{
conn.Open();
OracleDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
dict.Add((string)dr["PRODUCT_ID"],
new PopulateProduct()
{
ProductDesc = (string)dr["DESCRIPTION"],
UnitPrice = (decimal)dr["UNIT_PRICE"]
});
autocom.Add(dr["PRODUCT_ID"].ToString());
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message,"",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}
}
private void TB_PRODUCT_ID_TextChanged(object sender, EventArgs e)
{
if (dict.ContainsKey(TB_PRODUCT_ID.Text))
{
TB_PRODUCTS_DESC.Text = dict[TB_PRODUCT_ID.Text].ProductDesc;
TB_UNIT_PRICE.Text = dict[TB_PRODUCT_ID.Text].UnitPrice.ToString();
}
}
【问题讨论】:
-
这是
WinFormTextBox吗? -
如果全部在 UI 线程上,那么只需设置属性 Textbox.Text,否则在单独的线程上,您仍然需要访问 UI 线程,否则会抛出异常,因为 UI 对象无法由其他线程修改
-
@Ian 是的,它是窗体
-
@Mrinal Kamboj 实际上我有权限问题我不知道为什么错误消息说.. 'RAWPIC.RP0102.Object.ProductDesc' 由于其保护级别'RAWPIC.RP0102.Object'而无法访问.UnitPrice' 由于其保护级别而无法访问 'System.Collections.Generic.Dictionary
.Add(string, RAWPIC.RP0102.Object)' 的最佳重载方法匹配有一些无效参数1:无法从“对象”转换为“字符串”与您所说的线程有关吗???如果是,那你能帮我吗? -
@Mrinal Kamboj 如果有帮助,我已经发布了完整的代码