我使用Flex 4希望我可以让用户将照片从计算机拖放到Web应用程序以自动上传.
我对javascript/web编程有点新意,我一直有一些问题可能应该有简单的解决方案,但我遇到了极大的麻烦.我基本上只想将文本从一个表中的单元格拖到另一个表中的单元格.我的问题如下:
除了(a href)类型的链接拖放,我似乎无法做任何事情.如果我尝试在div上设置draggable = true选项,它仍然是不可分割的(在Firefox中).在我的搜索中,我还没有看到任何针对firefox的修复程序(我已经为webkit添加了css规则).
为了解决这个问题,我试图拖动一个(a href) - 用于括号的空间,我可以使用的链接标签数量有限制 - 从一个表格的单元格到另一个表格的单元格中的文本输入字段的项目默认操作是只拖动链接.我想要拖动的是标签的内容(例如,对于某些文本,我希望它返回"Some Text"或"draggable"或任何其他可自定义的文本).我已尝试通过e.datatransfer.setData("Text","My Custom Text")和e.datatransfer.getData("Text")在ondragstart/ondrop事件中处理此问题但是我仍然收到相同的结果.有人对此有任何建议吗?我一直在看这个问题,根本无法解决这个问题.非常感谢您的帮助.
编辑:我无法访问我正在使用的计算机,但我会尝试获取我正在做的事情的基本要点..
onDrop(e){ //onDrop is assigned to the drophandler of a text input field
var text = e.dataTransfer.getData('Text');
this.Text = text;
e.preventDefault();
}
onDragOver(e){
e.preventDefault();
}
onDragStart(e){
e.dataTransfer.setData('Text', 'My String');
}
....
<table>
<tr>
<td><a id="ident" href="#" draggable="true">Text Content</a></td>
</tr>
<table>
<table>
<tr>
<td><input ondrop="onDrop(e)" type="text" /></td>
</tr>
<table>
Run Code Online (Sandbox Code Playgroud) 我有这个代码:
<Window x:Class="WpfApplication8.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<ScrollViewer Background="#FFADB9CD" >
<Grid>
<Border Name="mask" Height="{Binding ElementName=cnvsEtikett, Path=Height}" Width="{Binding ElementName=cnvsEtikett, Path=Width}" Background="White" CornerRadius="6"/>
<Canvas Height="100" Name="cnvsEtikett" Width="200" Background="White" ClipToBounds="True">
<Canvas.OpacityMask>
<VisualBrush Visual="{Binding ElementName=mask}" />
</Canvas.OpacityMask>
<TextBlock Height="23.2" Text="TextBlock" Canvas.Left="63" Canvas.Top="41" />
</Canvas>
</Grid>
</ScrollViewer>
</Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)
我希望画布具有圆角,直到我将文本块拖动到任一侧之前,它都可以工作。然后角落消失了。这是我程序中窗口的简单重现,我在那里使用拖放操作来移动文本块。我确实需要那些圆角,但是我绝对不知道如何解决这个问题!
有任何想法吗??
编辑:当文本块移动到边缘时,似乎画布被拉伸了(因为拐角半径也改变了!)
我创建了一个usercontrol,其中包含Canvas和Canvas上的Button.为了能够在画布上移动按钮,我附加了一个如下所示的DragBehavior:
class DragOverCanvasBehavior : Behavior<FrameworkElement>
{
private Point _mouseStartPosition;
protected override void OnAttached()
{
AssociatedObject.MouseLeftButtonDown += (sender, e) =>
{
_mouseStartPosition = e.GetPosition((Canvas) AssociatedObject.Parent);
AssociatedObject.CaptureMouse();
};
AssociatedObject.MouseLeftButtonUp += (sender, e) => AssociatedObject.ReleaseMouseCapture();
AssociatedObject.MouseMove += (sender, e) =>
{
var point = e.GetPosition((Canvas)AssociatedObject.Parent) - _mouseStartPosition;
if (AssociatedObject.IsMouseCaptured)
{
Canvas.SetTop(AssociatedObject, point.Y);
Canvas.SetLeft(AssociatedObject, point.X);
}
};
}
}
Run Code Online (Sandbox Code Playgroud)
出于商业原因,如果我按住并拖动画布,我也需要移动画布.我使用类似的Behavior类来改变Canvas边距并给它看起来好像它在拖动时随鼠标指针移动一样.此行为还捕获鼠标.
现在的问题是 - 如果我单击并拖动按钮,Canvas也会获取鼠标事件并开始被拖动.如何确保在拖动Button时Canvas Behavior不会获得鼠标事件.
我尝试在行为中放置e.Handled = true,但这不起作用.
如果我发现鼠标已经被捕获了一些其他对象,我可以在行为中设置条件,以便不再捕获它.
我有一个自定义视图,我称之为"节点",它是一个名为"NodeGrid"的自定义ViewGroup的子节点."NodeGrid"类更具体地扩展了RelativeLayout.
我在自定义视图类("Node")中有以下代码片段:
private boolean isBeingDragged = false;
@Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN)
{
isBeingDragged = true;
}
else if (event.getAction() == MotionEvent.ACTION_UP)
{
isBeingDragged = false;
}
else if (event.getAction() == MotionEvent.ACTION_MOVE)
{
if (isBeingDragged)
{
float xPosition = event.getX();
float yPosition = event.getY();
//change the x and y position here
}
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
问题:
在这段代码中有设置断点后,它似乎像的onTouchEvent获取调用只为MotionEvent.ACTION_DOWN情况下,而不是任何的另外两起案件("动作"或"动作移动").有没有人知道可能导致这种情况发生的任何事情?
另外(可能是相关的):
不要紧,如何视图被添加到一个ViewGroup?我注意到除了"addView"之外,还有其他方法可以将子项添加到ViewGroup,例如"addFocusables"和"addTouchables".现在我只是使用"addView"将子视图添加到ViewGroup.
劳驾:
我只是不知道如何连接这些连续的操作?
按下鼠标然后拖动然后释放.如果用户不执行此操作,则不会执行某些操作...
我应该添加代码,因为已经按下来区分它吗?
常量MOUSE_MOVED不起作用,因为Eclipse告诉我它不知道它虽然我在鼠标事件api中找到参数
我不知道发生了什么......请帮忙!
我试图通过用鼠标抓住它来移动绘制的线条.
该线已被绘制Graphics.DrawLine(Pen P, Point A, Point B).
创建Line并在表单上绘制它绝对没有问题.
我试过了:
将线添加到GraphicsPath- 这甚至不绘制线OnPaint.
MouseEventArgs e.Location用一些基本的代数检查是否在线(我现在扔掉的计算)
总结一下:我想抓住线并将其拖到某处,但我甚至无法检查e.Location是否在线上,我该怎么做?
编辑:这是我使用GraphicsPath时代码的外观.
当我不使用GraphicsPath时,我有:
if (s.thisShape == ShapeType.Line) {
g.DrawLine(pen, s.p1, s.p2);
} else { ... }`
Run Code Online (Sandbox Code Playgroud)
在drawingShapes方法中.
从drawStuff:Usercontrol类:
private void drawStuff_MouseDown(object sender, MouseEventArgs e)
{
pointRegion = e.Location;
for (int i = 0; i < Shapes.Count; i++)
{
if (Shapes[i].Region.IsVisible(pointRegion))
{
isDragging = true;
count = i;
break;
}
}
}
private void drawStuff_MouseMove(object sender, MouseEventArgs e)
{
if (isDragging) …Run Code Online (Sandbox Code Playgroud) 我有一点设计问题.我正在做的是在C#桌面应用程序中拖放.我正在使用.NET树视图控件和第三方网格(不重要).我在多个地方使用文件系统的拖放操作,所以我创建了一个静态类来处理这个问题.现在这不仅仅是一个普通的文件系统.树视图是目录的表示,网格具有文件.复杂的部分是存在逻辑文件系统,因此所有这些都存储在数据库中.我只是解释所有这些,因为我想解释为什么我有问题.因为此时我正在处理许多对象,所以我的所有静态方法都有大量参数.我所有的静态方法几乎都使用相同的参数而且我能做些什么来避免这种情况?
我正在尝试做一个用户可以移动图像的应用程序...当用户将其移动到某个地方时,应用程序应该做其他事情...有点解锁...
但问题是当ACTION_UP语句不起作用时......有什么建议吗?
这是我的代码:
public class Main extends Activity {
private View selected_item = null;
private int offset_x = 0;
private int offset_y = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ViewGroup vg = (ViewGroup) findViewById(R.id.lout);
vg.setOnTouchListener(new View.OnTouchListener() {
@Override
@SuppressWarnings("deprecation")
public boolean onTouch(View v, MotionEvent event) {
switch (event.getActionMasked()) {
case MotionEvent.ACTION_MOVE:
int x = (int) event.getX() - offset_x;
int y = (int) event.getY() - offset_y;
int w = getWindowManager().getDefaultDisplay().getWidth() - 100;
int h = getWindowManager().getDefaultDisplay().getHeight() - 100; …Run Code Online (Sandbox Code Playgroud) 是否可以使用纯ASP.NET和C#将Listitems从1 DropDownlist拖放到另一个DropDownlist而不使用javascript?
drag-and-drop ×10
android ×2
c# ×2
mouseevent ×2
wpf ×2
.net ×1
apache-flex ×1
asp.net ×1
border ×1
canvas ×1
file-upload ×1
html5 ×1
java ×1
javascript ×1
line ×1
mouse ×1
mousecapture ×1
swing ×1
touch-event ×1
treeview ×1
view ×1
viewgroup ×1
winforms ×1