首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

同样的做法在VS2003下可以运行,为什么在VS2005下不能运行,请.(在VB.NET中也有发贴子)

2012-01-11 
同样的做法在VS2003下可以运行,为什么在VS2005下不能运行,请高手指点.(在VB.NET中也有发贴子)同样的做法在

同样的做法在VS2003下可以运行,为什么在VS2005下不能运行,请高手指点.(在VB.NET中也有发贴子)
同样的做法在VS2003下可以运行,为什么在VS2005下不能运行,请高手指点
操作步骤:
拖一个ComboBox   到窗体上命名为ComboBoxName
进入代码     导入命名空间
vb.net为:   Imports   System.Data.SqlClient
c#为:using   System.Data.SqlClient;
vb.net2003下的代码为:

'   匯入命名空間
Imports   System.Data.SqlClient
Public   Class   Form1
        Inherits   System.Windows.Forms.Form
        '   CurrencyManager   物件的類別層級宣告
        Dim   bmFoxStudio   As   BindingManagerBase

'     这里是Windows   窗体设计器生成的代码,,就省了。
        Private   Sub   Form1_Load(ByVal   sender   As   System.Object,   ByVal   e   As   System.EventArgs)   Handles   MyBase.Load
                Me.ComboBoxName.DataSource   =   CreateDataSource()
                ComboBoxName.DisplayMember   =   "id "
                bmFoxStudio   =   Me.BindingContext(CreateDataSource())
        End   Sub
        Private   Function   CreateDataSource()   As   ICollection
                Dim   dt   As   New   DataTable
                Dim   dr   As   DataRow
                dt.Columns.Add(New   DataColumn( "id ",   GetType(Int32)))
                dt.Columns.Add(New   DataColumn( "PkID ",   GetType(String)))
                For   i   As   Integer   =   0   To   5
                        dr   =   dt.NewRow()
                        dr(0)   =   i
                        dr(1)   =   "破晓之阳 "
                        dt.Rows.Add(dr)
                Next
                Dim   dv   As   New   DataView(dt)
                Return   dv
        End   Function

        Private   Sub   ComboBoxName_SelectedIndexChanged(ByVal   sender   As   System.Object,   ByVal   e   As   System.EventArgs)   Handles   ComboBoxName.SelectedIndexChanged
                bmFoxStudio.Position   =   Me.ComboBoxName.SelectedIndex
        End   Sub
End   Class

vb.net2005   代码:
Imports   System.Data.SqlClient
Public   Class   Form1
        Dim   bmFoxStudio   As   BindingManagerBase

        Private   Sub   Form1_Load(ByVal   sender   As   System.Object,   ByVal   e   As   System.EventArgs)   Handles   MyBase.Load
                Me.ComboBoxName.DataSource   =   CreateDataSource()


                ComboBoxName.DisplayMember   =   "id "
                bmFoxStudio   =   Me.BindingContext(CreateDataSource())
        End   Sub
        Private   Function   CreateDataSource()   As   ICollection
                Dim   dt   As   New   DataTable
                Dim   dr   As   DataRow
                dt.Columns.Add(New   DataColumn( "id ",   GetType(Int32)))
                dt.Columns.Add(New   DataColumn( "PkID ",   GetType(String)))
                For   i   As   Integer   =   0   To   5
                        dr   =   dt.NewRow()
                        dr(0)   =   i
                        dr(1)   =   "破晓之阳 "
                        dt.Rows.Add(dr)
                Next
                Dim   dv   As   New   DataView(dt)
                Return   dv
        End   Function
        Private   Sub   ComboBoxName_SelectedIndexChanged(ByVal   sender   As   System.Object,   ByVal   e   As   System.EventArgs)   Handles   ComboBoxName.SelectedIndexChanged
                bmFoxStudio.Position   =   Me.ComboBoxName.SelectedIndex
        End   Sub
End   Class

c#.net2003代码:
//   CurrencyManager   物件的類別層級宣告
BindingManagerBase   bmFoxStudio;
private   void   ComboBoxName_SelectedIndexChanged(object   sender,   System.EventArgs   e)
{
bmFoxStudio.Position   =   ComboBoxName.SelectedIndex;
}

private   void   Form1_Load(object   sender,   System.EventArgs   e)
{
ComboBoxName.DataSource   =   CreateDataSource(   );
ComboBoxName.DisplayMember   =   "id ";
                        bmFoxStudio   =   this.BindingContext[CreateDataSource(   )];
}
ICollection   CreateDataSource(   )
{
DataTable   dt   =   new   DataTable();
DataRow   dr;
dt.Columns.Add(new   DataColumn( "id ",   typeof(Int32)));
dt.Columns.Add(new   DataColumn( "PkID ",   typeof(string)));
for   (int   i   =   0;   i   <   6;   i++)
{
dr   =   dt.NewRow();
dr[0]   =   i;
dr[1]   =   "破晓之阳 ";
dt.Rows.Add(dr);
}
DataView   dv   =   new   DataView(dt);
return   dv;
}
c#.net2005   代码就省略了。




------解决方案--------------------


说真的,我除了接分,不知道说啥好了。没看出你的问题是什么。你当csdn是在线编译器?
[解决办法]
……
[解决办法]
楼主把错误信息发出来啊,代码格式乱了点
[解决办法]
错误信息在哪里?
[解决办法]
我也来接分......................
[解决办法]
UP
[解决办法]
跟踪看看

bmFoxStudio == null ???
[解决办法]
up

[解决办法]
沒有實例畫这种异常调试一下不就行了?
[解决办法]
关注。。。
[解决办法]
Private Sub ComboBoxName_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBoxName.SelectedIndexChanged
Me.BindingContext(Me.ComboBoxName.DataSource).Position = Me.ComboBoxName.SelectedIndex
End Sub
[解决办法]

朋友 看看这个问题。http://community.csdn.net/Expert/topic/5686/5686047.xml?temp=.8212702
--------------------------------------------------
BS楼主到处发这种信息的行为,会答的又想答的自然会来答了,这样到处乱发只会使人感到讨厌
[解决办法]
自己debug看看
[解决办法]

朋友 看看这个问题。http://community.csdn.net/Expert/topic/5686/5686047.xml?temp=.8212702
--------------------------------------------------

BS LZ
[解决办法]
LZ所给出的代码是有两个明显的问题的;
1、ComboBoxName绑定的数据源与BindingContext(CreateDataSource())中的数据源是两个对象.
2、SelectIndexChange事件发生在为控件指定DataSource时,此时
bmFoxStudio 为Nothing,所以会报错,至于2003为什么没有抛出异常,还不知道原因,不过可以加上try catch语句,异常是可以捕捉到的。
[解决办法]
所以代码最好改为
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.ComboBoxName.DataSource = CreateDataSource()
ComboBoxName.DisplayMember = "id "
End Sub
Private Function CreateDataSource() As ICollection
Dim dt As New DataTable
Dim dr As DataRow
dt.Columns.Add(New DataColumn( "id ", GetType(Int32)))
dt.Columns.Add(New DataColumn( "PkID ", GetType(String)))
For i As Integer = 0 To 5
dr = dt.NewRow()
dr(0) = i
dr(1) = "破晓之阳 " & i
dt.Rows.Add(dr)
Next
Dim dv As New DataView(dt)
Return dv
End Function
Private Sub ComboBoxName_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBoxName.SelectedIndexChanged
Me.BindingContext(Me.ComboBoxName.DataSource).Position = Me.ComboBoxName.SelectedIndex
End Sub

[解决办法]
要说Bug的话只能说是2003的bug,因为 bmFoxStudio.Position = Me.ComboBoxName.SelectedIndex应该是会抛出异常的,而程序运行过程中如果未加try ..catch时就不会出现异常,这可能是bug吧

------解决方案--------------------


zhaoxiaoyang5156() ( ) 信誉:100 2007-8-1 8:31:53 得分: 0



再說了。。如果就你們不用測試,光在這麗看就能看出問題來。。我還回來來這麗提問嗎??
真是笑話。。我當我剛學啊。

回答這位朋友:
你有那么大的本事,一看就能看出來不。。不答就不答啊 。說什么在线编译器。
wuyazhe(牛肉面) ( ) 信誉:100

说真的,我除了接分,不知道说啥好了。没看出你的问题是什么。你当csdn是在线编译器?





你帖子错误提示都不写。又不是个常见问题。只帖了一段。谁愿意一行一行的读完找错误??
上面回答你问题的人是不是都看了你写的错误提示才回答的?你怎么提问这么不耐烦呢?本来这个问题在这里就是很难得到答案的。你说05编译不通过。升级编译不通过的多了去了。除了自己调试,跟踪代码。看什么地方是没有作的。自己修改。别人找。顶多是看看你说哪提示报错了。就回答你,该去看看什么,你反复声明自己不懂,但你一点也不谦虚。


我不是高手。看到我的星星也该明白,我的热心成都,如果不想回答你问题。你在我的帖子里回复的时候,我就不来看你的问题了。

ps:你这个问题我回答不了。不懂这方面的。
[解决办法]
楼主应该自省其身 而不是在这里牢骚
[解决办法]
帮你顶下
顺便接点分
[解决办法]
頂。。日上面發廣告的。
[解决办法]
曾经碰到过SelectedIndexChanged不能触发的情况,你可以查一下是不是这样的情况

热点排行