初学者咨询一个 C#的问题,求大佬解答啊

2023-05-08 09:58:30 +08:00
 buxiugangpen
我需要创建一个结构体
struct jiegouti
{
public string data_bj;
public string data_bx;
public string data_tx;
public string data_ty;
}
现在想根据页面数据的数量来自动创建多个结构体,比如
jiegouti jgt1;
jiegouti jgt2;
jiegouti jgt3;
jiegouti jgt4;

这些结构体要获取类似的控件数据
比如下面的
jgt1.data_bj = txbox_bj1.Text;
jgt1.data_bx = txbox_bx1.Text;
jgt1.data_tx = txbox_tx1.Text;
jgt1.data_ty = txbox_ty1.Text;

jgt2.data_bj = txbox_bj2.Text;
jgt2.data_bx = txbox_bx2.Text;
jgt2.data_tx = txbox_tx2.Text;
jgt2.data_ty = txbox_ty2.Text;

我现在想要写个循环,来根据页面的数量自动创建结构体,并且获取每个结构体字段下面的控件数值,应该怎么写,我写出来的结构体中的局部变量都变成字符串了,,
我的大概写法,如下,求大佬帮忙看看咋弄。
for(int j=1;j<=6;j++){
$["jgt"+j].data_bj = $["txbox_bj"+j].Text
}
2333 次点击
所在节点    C#
25 条回复
Rocketer
2023-05-08 10:20:26 +08:00
动态变量名?那你得用反射了。

数组不行吗?为什么非得动态变量名?
buxiugangpen
2023-05-08 10:24:26 +08:00
@Rocketer 大佬,反射咋用,还没搞会反射啊,,,,数组应该是可以的,因为我刚学到结构体,所以想试试用结构体来写这个小功能。。。
csrocks
2023-05-08 10:45:45 +08:00
var dict = new ..<string, struct>();
for(..){
var s = new struct;
s.xx=xx;
dict.add(name, s);
}
buxiugangpen
2023-05-08 10:53:57 +08:00
@csrocks 大佬好,大佬,我没看懂,有注释没
reallittoma
2023-05-08 11:00:00 +08:00
$["jgt"+j]这是什么写法?我咋看不懂 C#了……
apie
2023-05-08 11:05:04 +08:00
能上 v2 应该能找到免费 chat-gpt 吧,这种问题,最适合用 chat-gpt 来解决了,一方面你可以锻炼自己描述问题的能力,另一方面,能够给你及时和针对性的反馈。不是说群友回答得不好,而是这样效率太低了。
buxiugangpen
2023-05-08 11:11:08 +08:00
@reallittoma 这样写变 string 了,拼接变量的
buxiugangpen
2023-05-08 11:12:03 +08:00
@apie 1 块钱一个月的 vpn ,ip 不稳定,chat-gpt 基本上没成功过,,,挨~!~
buxiugangpen
2023-05-08 11:13:16 +08:00
@reallittoma 拼接字符串,不是变量。。。。
wu00
2023-05-08 11:14:15 +08:00
描述的一塌糊涂,确实是个初学者;
感觉要的是这个:
UI 界面动态添加出行人[姓名、手机号...],提交时拿到所有出行人对象

```
var jiegoutis = new List<jiegouti>();
foreach(var container in containers)
{
jiegoutis.Add(new jiegouti
{
data_bj = container.txbox_bj.Text;
data_bx = container.txbox_bx.Text;
...
})
}
```
TiggeYL
2023-05-08 11:17:55 +08:00
建议用数组( Array )、枚举(继承 IEnumerable 的 比如 List<T>)或者字典( Dictionary<string,T>),
T 是泛型
unclejock
2023-05-08 11:21:26 +08:00
花几十块钱开个 vpn 吧...
buxiugangpen
2023-05-08 11:35:32 +08:00
@wu00 多谢大佬,我试试,这个勉强能看明白
buxiugangpen
2023-05-08 11:36:40 +08:00
@unclejock 大佬,推荐个,我现在花了 20 多,买了两年多的这个一块的 vpn
buxiugangpen
2023-05-08 11:37:32 +08:00
@TiggeYL 我都试试看看那个效率高,,反射我也研究下,反正也不是啥着急的功能,有的是时间
unclejock
2023-05-08 14:14:03 +08:00
@buxiugangpen
v:cmF5c2VhcmNoZXI=
kop1989smurf
2023-05-08 14:44:13 +08:00
动态生成、调用变量:用反射。

但一般情况下,UI 的呈现逻辑是不需要反射的,除非你用错了组件的使用方式。
比如你靠 button 、label 去呈现列表数据。
buxiugangpen
2023-05-08 15:04:07 +08:00
@kop1989smurf 大佬,,,我用的是 textbox ,,现在 textbox 的名字不知道怎么弄到循环里,,,比如 a1= textbox1.text a2= textbox2.text a3= textbox3.text 怎么 textbox+数字 这个就不知道怎么弄了
kop1989smurf
2023-05-08 15:23:39 +08:00
@buxiugangpen 从你描述的情境下来看,你只需要遍历某 panel 下的 textbox 组件就可以了,并不需要反射。
搜索关键词:winform 遍历组件
例如这篇文章: https://www.cnblogs.com/winformasp/articles/11865326.html
buxiugangpen
2023-05-09 09:47:24 +08:00
@kop1989smurf 是想遍历,但是因为 textbox 的数量不确定,还有时间的控件,主要是想学一下,控件名称怎么拼接,拼接后还能调用控件的属性

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/938154

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX