c#相关--记录学习中一些小技巧

这篇博客介绍了C#中如何使用console.readline()暂停控制台输出,理解并应用委托delegate、事件event和EventHandlerAction,以及在不同窗体间传递数据的方法。还探讨了DLL的调用,包括可能出现的错误及其解决方案,如位数不匹配和文件路径问题。此外,文章详细讲解了多线程的实现,特别是如何在后台线程中更新UI,并提供了动态创建和删除控件的示例代码。
摘要由CSDN通过智能技术生成

1、c# console暂停输出
console.readline();

2、委托delegate event eventhandler action
简明解释:https://blog.csdn.net/smile_Ho/article/details/105899809
几种委托的详细解释1:https://blog.csdn.net/chopper7278/article/details/3145000
委托详解2:

delegate()讲的比较好的:https://www.cnblogs.com/hushzhang/p/5901052.html

3、不同窗体之间传值
https://bbs.csdn.net/topics/390128592

4、dll调用:
http://www.zyiz.net/tech/detail-268058.html
https://www.cnblogs.com/suifing/p/4023268.html
使用的时候几个错误:

  1. 调用 Dll "试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)
    dll位数和当前编译器位数不匹配。都设置为32位/64位试试。
    2.文件路径放在debug下。

5、多线程:
G_th = new System.Threading.Thread(//新建一条线程
delegate()//使用匿名方法
{
int P_int_count = 0;//初始化计数器
while (true)//开始无限循环
{
P_int_count = //计数器累加
++P_int_count > 100000000 ? 0 : P_int_count;
this.Invoke(//将代码交给主线程执行(由于更新控件内容只能通过主线程,因此交给主线程执行。
(MethodInvoker) delegate//使用匿名方法
{
lb_time.Text = //窗体中显示计数
P_int_count.ToString();
});
System.Threading.Thread.Sleep(1000);//线程睡眠1秒
}
});
其他:
https://blog.csdn.net/u014090257/article/details/86703816
下面这个还没仔细看,涉及异步/同步线程,线程池等高级操作,先放过。
https://www.cnblogs.com/luxiaoxun/p/3280146.html

6、动态创建控件/删除控件/定义函数

for (int i = 0; i < 100; i++)//添加100个按钮
{
Button bt = new Button();//创建button按钮
bt.Text = (i + 1).ToString();//设置button按钮的文本值
bt.Name = (i + 1).ToString();//设置button按钮的Name属性
bt.Width = 35;//设置button按钮的宽
bt.Height = 35;//设置button按钮的高
bt.Location = new Point(p_int_x, p_int_y);//设置button按钮的位置
bt.Click += new EventHandler(bt_Click);//定义button按钮的事件,用了事件。
p_int_x += 36;//设置下一个按钮的位置
if ((i + 1) % 10 == 0)//设置换行
{
p_int_x = 10;//换行后重新设置X坐标
p_int_y += 36;//换行后重新设置Y坐标
}
Controls.Add(bt);//将button按钮放入窗体控件集合中
}
动态定义点击函数:
void bt_Click(object sender, EventArgs e)
{
Control P_control = sender as Control;//将sender转换为control类型对象
do something…
}
}

删除所有控件或其他,可参考。
不能直接用controls.removeat[0-100]这种,因为删除后controls索引总数会变化。

实现参考下面代码:
void RemoveControl()
{
for (int i = 0; i < 100; i++)//开始遍历100个按钮
{
if (Controls.ContainsKey(//窗体中是否有此按钮
(i+1).ToString()))
{
for (int j = 0; j < Controls.Count; j++)//遍历窗体控件集合
{
if (Controls[j].Name == //是否查找到按钮
(i + 1).ToString())
{
Controls.RemoveAt(j);//删除指定按钮
break;
}
}
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值