用代码编了一个控件,如何再写这个控件的事件

问题描述

想实现的功能是这样的:显示在数据库中所有的学生照片,并单击某个学生照片显示其基本信息。目前我写的已经可以显示所有的学生照片了,但单击照片显示信息实在是不知道怎么写。本人学生,忘各位大神指点一二,谢谢。stringstrConnect="datasource=.;initialcatalog=test;integratedsecurity=true";SqlConnectionconConnection=newSqlConnection(strConnect);conConnection.Open();stringsqlStr="selectpicturefrompicture";SqlDataAdaptermyAdapter=newSqlDataAdapter(sqlStr,conConnection);DataSetmydataSet=newDataSet();myAdapter.Fill(mydataSet,"test_user");conConnection.Close();imageList1.ImageSize=newSize(139,102);for(inti=0;i<mydataSet.Tables["test_user"].Rows.Count;i++){imageList1.Images.Add(Image.FromFile(""+mydataSet.Tables["test_user"].Rows[i]["picture"].ToString()+""));}for(inti=0;i<imageList1.Images.Count;i++){PictureBoxpic=newPictureBox();this.Controls.Add(pic);pic.Size=newSystem.Drawing.Size(139,102);pic.Location=newSystem.Drawing.Point(1,loca);pic.Image=imageList1.Images[i];loca+=108;}

解决方案

解决方案二:
pic.Click+=你的事件处理函数
解决方案三:
是的,在你的for循环里面加1楼的代码,方法逻辑自己处理下即可。for(inti=0;i<imageList1.Images.Count;i++){PictureBoxpic=newPictureBox();this.Controls.Add(pic);pic.Size=newSystem.Drawing.Size(139,102);pic.Location=newSystem.Drawing.Point(1,loca);pic.Image=imageList1.Images[i];loca+=108;pic.Click+=(ss,ee)=>{...//处理逻辑};}

解决方案四:
引用1楼caozhy的回复:

pic.Click+=你的事件处理函数

再自定义一个函数写,但这样不是只能显示某个学生的信息,怎么显示点击照片的那个人的信息呢?
解决方案五:
引用2楼guwei4037的回复:

是的,在你的for循环里面加1楼的代码,方法逻辑自己处理下即可。for(inti=0;i<imageList1.Images.Count;i++){PictureBoxpic=newPictureBox();this.Controls.Add(pic);pic.Size=newSystem.Drawing.Size(139,102);pic.Location=newSystem.Drawing.Point(1,loca);pic.Image=imageList1.Images[i];loca+=108;pic.Click+=(ss,ee)=>{...//处理逻辑};}

没看懂、我是要这样再建一个方法吗?privatevoidpic_Click(objectsender,EventArgse){}然后pic.Click+=pic_Click;对吗?
解决方案六:
是的,然后再在方法里面根据你的要求处理一下逻辑就可以了。
解决方案七:
引用5楼guwei4037的回复:

是的,然后再在方法里面根据你的要求处理一下逻辑就可以了。

但是这样做,我弄不懂要怎么做才能显示其信息(逻辑不懂了,瓶颈)。比如说我要点击这个照片就能显示它的地址(地址就在我上面写的数据库里),这个要怎么做。
解决方案八:
引用5楼guwei4037的回复:

是的,然后再在方法里面根据你的要求处理一下逻辑就可以了。

privatevoidpic_Click(objectsender,EventArgse){stringstrConnect="datasource=.;initialcatalog=test;integratedsecurity=true";SqlConnectionconConnection=newSqlConnection(strConnect);conConnection.Open();stringsqlStr="selectpicturefrompicture";SqlDataAdaptermyAdapter=newSqlDataAdapter(sqlStr,conConnection);DataSetmydataSet=newDataSet();myAdapter.Fill(mydataSet,"test_user");conConnection.Close();label1.Text=mydataSet.Tables["test_user"].Rows[i]["picture"].ToString();}

Row[i]里i的值怎么才能取到当前点击的图片呢
解决方案九:
你把imageList1.Images[i].Tag="这里面存放学生的学号",然后在方面里面取一下,查一下对应的信息给文本框赋值就可以了;
解决方案十:
引用8楼guwei4037的回复:

你把imageList1.Images[i].Tag="这里面存放学生的学号",然后在方面里面取一下,查一下对应的信息给文本框赋值就可以了;

让我试试写下,谢谢你
解决方案十一:
引用8楼guwei4037的回复:

你把imageList1.Images[i].Tag="这里面存放学生的学号",然后在方面里面取一下,查一下对应的信息给文本框赋值就可以了;

for(inti=0;i<imageList1.Images.Count;i++){imageList1.Images[i].Tag=""+mydataSet.Tables["test_user"].Rows[i]["picture"].ToString()+"";PictureBoxpic=newPictureBox();this.Controls.Add(pic);pic.Size=newSystem.Drawing.Size(139,102);pic.Location=newSystem.Drawing.Point(1,loca);pic.Image=imageList1.Images[i];pic.Click+=pic_Click;loca+=108;}}privatevoidpic_Click(objectsender,EventArgse){label1.Text=imageList1.Images[i].Tag.ToString();}

又不知道怎么取i值了
解决方案十二:
引用8楼guwei4037的回复:

你把imageList1.Images[i].Tag="这里面存放学生的学号",然后在方面里面取一下,查一下对应的信息给文本框赋值就可以了;

关键是用代码建了了很多个pictureBox,又不知道他们的name是什么。要不直接picture1.tag就可以了。
解决方案十三:
privatevoidpic_Click(objectsender,EventArgse){Imageimg=(Image)sender;label1.Text=imageList1.Img.Tag.ToString();}

我猜的,也许有用
解决方案十四:
把图片放在学生表中,然后把信息取出来publicclassUserInfo{publicstringName{get;set;}publiestringAddress{get;set;}....................}stringstrConnect="datasource=.;initialcatalog=test;integratedsecurity=true";SqlConnectionconConnection=newSqlConnection(strConnect);conConnection.Open();stringsqlStr="select*fromusers";SqlDataAdaptermyAdapter=newSqlDataAdapter(sqlStr,conConnection);DataSetmydataSet=newDataSet();myAdapter.Fill(mydataSet,"test_user");conConnection.Close();imageList1.ImageSize=newSize(139,102);DataTableuserDt=mydataSet.Tables["test_user"];for(inti=0;i<userDt.Rows.Count;i++){UserInfouser=newUserInfo();DataRowdr=userDt.Rows[i];PictureBoxpic=newPictureBox();this.Controls.Add(pic);pic.Size=newSystem.Drawing.Size(139,102);pic.Location=newSystem.Drawing.Point(1,loca);pic.Image=Image.FromFile(""+dr[i]["picture"].ToString()+"")loca+=108;user.Name=dr[i]["Name"].ToString()user.Address=dr[i]["Address"].ToString()pic.Click+=pic_Click;pic.Tag=user;}privatevoidpic_Click(objectsender,EventArgse){PictureBoxpic=(PictureBox)sender;UserInfo=(UserInfo)pic.Tag;}

解决方案十五:
13楼就是正解~

时间: 2024-09-12 13:31:42

用代码编了一个控件,如何再写这个控件的事件的相关文章

adodc-用ADO控件编的一个简易学生成绩管理器,运行时显示找不到可安装的ISAM,求解决

问题描述 用ADO控件编的一个简易学生成绩管理器,运行时显示找不到可安装的ISAM,求解决 Private Sub Command1_Click() On Err GoTo MyErr If Command1.Caption = "添加" Then Text1.Text = "" Text2.Text = "" Text3.Text = "" Text4.Text = "" Text5.Text = &qu

求助:刚刚用VS2010编了一个窗体应用程序,找不到输出控件。怎么输出啊??。。

问题描述 求助:刚刚用VS2010编了一个窗体应用程序,找不到输出控件.怎么输出啊??感谢大神啊 解决方案 解决方案二:messagebox::show解决方案三:引用楼主kongxfls的回复: 求助:刚刚用VS2010编了一个窗体应用程序,找不到输出控件.怎么输出啊??感谢大神啊 请说清楚一些?解决方案四:在窗体上放一个TextBox,然后TextBox->Text=L"AAAAA";就可以了.解决方案五:你建的是什么工程?是要输出控件,输出语句

双缓冲绘图和窗口控件的绘制——ATL ActiveX 窗口控件生成向导绘制代码OnDraw的一个错误 .

双缓冲绘图和窗口控件的绘制 ---ATL ActiveX 窗口控件生成向导绘制代码OnDraw的一个错误   cheungmine 我们通常使用ATL COM组件,生成一个带窗口的ActiveX控件,然后希望在这个窗口中绘制我们的图像.图形等数据,然而ATL向导生成的代码中包含很多错误,下面是其自动向导生成的代码:     HRESULT OnDraw(ATL_DRAWINFO& di)    {        RECT& rc = *(RECT*)di.prcBounds;       

c# 接口 类-是否接口都对应某一个控件 必须添加了那个控件才能使用接口?

问题描述 是否接口都对应某一个控件 必须添加了那个控件才能使用接口? 做arcgis二次开发 c# 书上很多都是各种接口 代码也是引用各种接口 可是我按代码编 也很多都显示错误 是需要添加相应控件吗 解决方案 换一本有源代码的书来看.也许这本书的作者自己程序都没有调通,胡诌了几行,你还信以为真呢. 这里之所以用接口,是因为ArcGIS是一个COM对象,而不是原生的.NET库,所以在C#中有很多包装的接口.

Android 中 SwipeLayout一个展示条目底层菜单的侧滑控件源码解析_Android

由于项目上的需要侧滑条目展示收藏按钮,记得之前代码家有写过一个厉害的开源控件 AndroidSwipeLayout 本来准备直接拿来使用,但是看过 issue 发现现在有不少使用者反应有不少的 bug ,而且代码家现在貌似也不进行维护了.故自己实现了一个所要效果的一个控件.因为只是实现我需要的效果,所以大家也能看到,代码里有不少地方我是写死的.希望对大家有些帮助.而且暂时也不需要 AndroidSwipeLayout 大而全的功能,算是变相给自己做的项目精简代码了. 完整示例代码请看:GitHu

radio button-C#编程 其中radioButton控件48个,button控件24个,请教各位大牛,如何简化编写,功能如下代码重复24次。

问题描述 C#编程 其中radioButton控件48个,button控件24个,请教各位大牛,如何简化编写,功能如下代码重复24次. 1C private void radioButton1_CheckedChanged(object sender EventArgs e) { if (radioButton1.Checked == true) button1.BackColor = Color.Red; } private void radioButton2_CheckedChanged(o

mfc c++-一个在MFC对话框程序的PICTRUE控件中绘图的问题

问题描述 一个在MFC对话框程序的PICTRUE控件中绘图的问题 本人目前正在做一个小程序,用于在数据库中读取某个字段,然后根据读取的结果在Pictrue控件中进行绘图(由一个按钮按下的事件驱动).原理为这般:bool型变量m_bIsDraw (默认为false) 用于判断是否为首次程序,如果是第一次打开则执行在OnPaint()函数中drawCircle(void)函数(用于生成直角坐标系和圆形的底图),然后将m_bIsDraw置为true,按键按下的函数中调用void CfindHistor

mfc cmfctabctrl-用CMFCTabCtrl类创建一个Tab控件,然后在该控件上添加一个对话框

问题描述 用CMFCTabCtrl类创建一个Tab控件,然后在该控件上添加一个对话框 用CMFCTabCtrl类创建一个Tab控件,然后在该控件上添加一个对话框,但是添加之后,会出现setfouce的问题,也有__debugbreak()问题.. 有没有大神给个代码看看,我怎么改都不行

c# com控件-C#調用OCX控件問題,如何在另外一个方法中执行A 并获取A事件的执行情况

问题描述 C#調用OCX控件問題,如何在另外一个方法中执行A 并获取A事件的执行情况 最近开发时使用到一个第3方提供的ocx控件.其中ocx控件中有一个A方法,以及一个A方法的事件(通过事件中的参数来判断A方法的执行情况) 我的问题是:我写了一个B方法,在B方法中调用了A方法,并要在B方法中等待A事件的执行并判断其执行情况.但是我在B方法中等待A事件超时后才会执行A的事件,即只有退出B方法后A的事件才会执行.求各位大神帮帮忙.小弟入行不久,不知道如何处理.附上代码 后来我在B方法中通过线程去执行