winform和wpf的转换问题

.Net技术 码拜 10年前 (2015-05-10) 2268次浏览 0个评论

我用wpfxaml写了一个简单的用户界面,就是在menu里面有几个操作,可是仅仅写了界面,后台没有任何逻辑实现的代码(相当于是个空壳),如下图:
winform和wpf的转换问题
winform和wpf的转换问题
然后我又用winform设计了一个窗口,并且写了每个按钮的功能代码,在winform中是可以实现相关操作的(相当于是一个完整的软件了),如下图:
winform和wpf的转换问题
我觉得我wpf的用户界面更好看,想要用我WPF的用户界面来调用winform,请问怎么实现?

5分
既然你觉得WPF好看,那为什么还要调用winform
调用了,显示出来的winform也不是WPF风格啊

你把winform里面的代码粘过来不就得了

引用 1 楼 Z65443344 的回复:

既然你觉得WPF好看,那为什么还要调用winform
调用了,显示出来的winform也不是WPF风格啊

你把winform里面的代码粘过来不就得了

当时是因为我对WPF根本不懂,老师又要求必须要用WPF写界面,,所以才想到了用winform来做逻辑,。,最后 把它弄到wpf界面中来这个破办法。。。现在骑虎难下呀。。。你说直接把winform里面的代码粘过来可以吗?我winform全是button,这边全是菜单栏呀。。。

10分
有什么区别吗

button里的代码粘过来就好了,没让你把事件函数也粘过来啊

引用 3 楼 Z65443344 的回复:

有什么区别吗

button里的代码粘过来就好了,没让你把事件函数也粘过来啊

哦哦哦,对哈。。我先去试试哈,,有什么问题再请教你!谢谢!

5分
后台代码都是一样的。如果非得调用winform,可以使用 WindowsFormsHost
引用 3 楼 Z65443344 的回复:

有什么区别吗

button里的代码粘过来就好了,没让你把事件函数也粘过来啊

引用 5 楼 duanzi_peng 的回复:

后台代码都是一样的。如果非得调用winform,可以使用 WindowsFormsHost

我想再请问下我在写打开文件夹的时候, if (ofd.ShowDialog().Value == true)为什么不对?                         错误 1 “System.Windows.Forms.DialogResult”不包含“Value”的定义,并且找不到可接受类型为“System.Windows.Forms.DialogResult”的第一个参数的扩展方法“Value”(是否缺少 using 指令或程序集引用?) E:\zqs\vs2010\project\menu\menu\MainWindow.xaml.cs 44 34 menu

5分
System.Windows.Forms.DialogResult   = DialogResult.Ok
System.Windows.Forms.DialogResult   = DialogResult.Ok
引用 8 楼 duanzi_peng 的回复:

System.Windows.Forms.DialogResult   = DialogResult.Ok

好像还是不行。。。  if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.Cancel)这样好像可以。。。
我之前在winform中图片是显示在picturebox中,请问下wpf中怎么办才好?我是新手。。。可能问题比较多,,,还请大神们耐心赐教。。。

 if (ofd.ShowDialog()== true)     把Value 去掉
引用 10 楼 duanzi_peng 的回复:

 if (ofd.ShowDialog()== true)     把Value 去掉

还是不行呢,..错误 1 运算符“==”无法应用于“System.Windows.Forms.DialogResult”和“bool”类型的操作数
 if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.Cancel)这样好像可以。。。我运行了下有弹出对话框让我选择文件…我现在是在纠结如何显示图片,因为我之前的winform代码是   pictureBox1.Image = img1.ToBitmap();   
现在这个picturebox肯定不能用了呀…

5分
引用 11 楼 baidu_27740057 的回复:
Quote: 引用 10 楼 duanzi_peng 的回复:

 if (ofd.ShowDialog()== true)     把Value 去掉

还是不行呢,..错误 1 运算符“==”无法应用于“System.Windows.Forms.DialogResult”和“bool”类型的操作数
 if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.Cancel)这样好像可以。。。我运行了下有弹出对话框让我选择文件…我现在是在纠结如何显示图片,因为我之前的winform代码是   pictureBox1.Image = img1.ToBitmap();   
现在这个picturebox肯定不能用了呀…

在 System.Windows.Forms 与 Microsoft.Win3 下都有这个DialogResult ,看看 你using的是那一个。

显示图片, 可以设置Filter

5分
ofd.ShowDialog() == System.Windows.Forms.DialogResult.Cancel
既然这样可以,那ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK应该也可以啊
反正就那么几种,是个枚举类型

看你逻辑是相等的时候return还是相等的时候执行代码,根据逻辑的不同,选用OK或Cancel

引用 13 楼 Z65443344 的回复:

ofd.ShowDialog() == System.Windows.Forms.DialogResult.Cancel
既然这样可以,那ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK应该也可以啊
反正就那么几种,是个枚举类型

看你逻辑是相等的时候return还是相等的时候执行代码,根据逻辑的不同,选用OK或Cancel

谢谢,你说的是对的,这个问题我已经解决了,我用的ok。我现在想要显示张图片,代码如下
   if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                img1 = new Image<Bgr, Byte>(ofd.FileName);
                image1.Source = img1.ToBitmap();   
            
            }     
错误 1 无法将类型“System.Drawing.Bitmap”隐式转换为“System.Windows.Media.ImageSource”   该怎么解决呢

引用 12 楼 duanzi_peng 的回复:
Quote: 引用 11 楼 baidu_27740057 的回复:
Quote: 引用 10 楼 duanzi_peng 的回复:

 if (ofd.ShowDialog()== true)     把Value 去掉

还是不行呢,..错误 1 运算符“==”无法应用于“System.Windows.Forms.DialogResult”和“bool”类型的操作数
 if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.Cancel)这样好像可以。。。我运行了下有弹出对话框让我选择文件…我现在是在纠结如何显示图片,因为我之前的winform代码是   pictureBox1.Image = img1.ToBitmap();   
现在这个picturebox肯定不能用了呀…

在 System.Windows.Forms 与 Microsoft.Win3 下都有这个DialogResult ,看看 你using的是那一个。

显示图片, 可以设置Filter

Filter我不太懂。。。我想知道image可以吗?我用image.source来显示,他的后面应该是什么形式的img1呢?

new Image
改成Image.FromFile(path)
5分
你的类型搞错了。BitmapImage 对象才是一种 ImageSource,而 BitMap 并不是。
BitmapImage 对象才是一种 ImageSource  –>   BitmapImage 对象类才是一种 ImageSource
引用 18 楼 sp1234 的回复:

BitmapImage 对象才是一种 ImageSource  –>   BitmapImage 对象类才是一种 ImageSource

确实是类型搞错了无法转换,关键是我现在已经定义了一个全局的   Image<Bgr, Byte> img1,而且后面对这个图片的处理需要它是Image<Bgr, Byte>这个类型的。我要用什么控件才能让Image<Bgr, Byte>类型的图片打开显示在我的wpf软件中呢?我之前用的winform,picturebox就可以解决,这里有没有类似的控件呢?谢谢了。

引用 16 楼 Z65443344 的回复:

new Image
改成Image.FromFile(path)

我不太明白这个方法。。。。

谢谢大家,我已经弄出来。在wpf里面调用winform的picturebox的控件就好了,调用过来之后,就可以完全粘贴winform的代码。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明winform和wpf的转换问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!